PDA

Vollständige Version anzeigen : Brauche Hilfe bei Abfrage


Alexandra, die zweite
01.10.2002, 09:54
Hallo,

ich hab hier 2 Tabellen, Tabelle1 und Tabelle2, die in einer 1:n Beziehung stehen.

Jetzt brauche ich eine Abfrage, die mir aus Tabelle1 die Felder "Seriennummer" und "Artikelnummer" und aus Tabelle2 den ersten Wert von "Kundennummer" und "Lieferdatum".

Soweit kein Problem. Jetzt gibt es allerdings auch Datensätze bei denen es zu einer Seriennummer keine Kundennummer und kein Lieferdatum gibt. Das Abfrageergebnis muss dann so aussehen, dass zwar Seriennummer und Artikelnummer zu sehen sind, Kundennummer und Lieferdatum allerdings leer sind

Kann mir hier jemand helfen? Danke!

Gruß,
Alex

A.S.
01.10.2002, 10:21
Hallo Alexandra,

poste bitte einmal den exakten Aufbau der Tabellen, was die relevanten Felder angeht.

IMHO dürfte es so aussehen

Tabelle1
Artikelnummer; Zahl; LongInt
Seriennummer; Zahl; LongInt

Tabelle2
Artikelnummer; Zahl; LongInt
Seriennummer; Zahl; LongInt
Kundennummer; Zahl; LongInt
Lieferdatum; Zahl; LongInt

Jedoch irre ich mich entweder oder mutmaße einen Bug bezüglich des Tabellendesigns ;)

Gruß

Arno

Alexandra, die zweite
01.10.2002, 13:49
hi,

also ...

Tabelle1 beinhaltet die Felder: Seriennummer, Artikelnummer

Tabelle2 beinhaltet die Felder: Seriennummer, Kundennummer, Lieferdatum

Es besteht folgende Beziehung:
Tabelle1 <- 1:n -> Tabelle2

Heißt soviel wie, einer Artikelnummer wurde eine Seriennummer zugeordnet. Der Artikel mit dieser Seriennummer kann mehrfach ausgeliefert worden sein (an Kunde1, dann zurückgekommen, dann an Kunde2) oder eben noch im Lager liegen; dann gibt es keinen Eintrag zu der Seriennummer in Tabelle2

z.B. beinhaltet Tabelle1 und Tabelle2 folgendes..

Tabelle1 (SN, Artikel):
0815 - 12345678
4711 - 87654321
8526 - 64852963
1234 - 16549877

Tabelle2 (SN, Kundennummer, Lieferdatum):
0815 - 21111 - 01.01.2002
8526 - 97897 - 05.05.2002
8526 - 99999 - 07.07.2002
1234 - 88888 - 04.05.2002


SN 4711 wurde gar nicht ausgeliefert, SN 8526 in diesem Falle 2 Mal (z.B. von Kunde1 am 06.06.2002 zurückgekommen). Mein Abfrageergebnis soll jetzt wie folgt aussehen

SN, Artikelnummer, Kundennummer, Lieferdatum

0815 - 12345678 - 21111 - 01.01.2002
4711 - 87654321
8526 - 64852963 - 97897 - 05.05.2002
1234 - 16549877 - 88888 - 04.05.2002

Bei SN bei denen mehrere Auslieferungen vorhanden sind, soll die erste Auslieferung genommen werden.

Ich hoffe jetzt ist es ein wenig klarer geworden was Aufbau und Ziel betrifft?! :-)

Gruß,
Alex

A.S.
01.10.2002, 14:02
Hallo Alex,

jep, das waren genau die Infos auf die ich gewartet habe ;)


SELECT Tabelle2.Seriennummer As Seriennummer,
Tabelle1.Artikelnummer As Artikelnummer,
First(Tabelle2.Kundennummer) As Kundennummer,
First(Tabelle2.Lieferdatum) As Lieferdatum
FROM Tabelle1
INNER JOIN Tabelle2 ON Tabelle1.Seriennummer = Tabelle2.Seriennummer
GROUP BY Tabelle2.Seriennummer,
Tabelle1.Artikelnummer

UNION

SELECT Tabelle1.Seriennummer As Seriennummer,
Tabelle1.Artikelnummer As Artikelnummer,
Null As Kundennummer,
Null As Lieferdatum
FROM Tabelle1
LEFT JOIN Tabelle2 ON Tabelle1.Seriennummer = Tabelle2.Seriennummer
WHERE (((Tabelle2.Seriennummer) Is Null));

sollte Dir helfen. Einfach in die SQL-Ansicht einer Abfrage kopieren und wenn notwendig die Feldbezeichner noch anpassen.

PS Habe ganz überlesen das von Kundennummer und Lieferdatum der erste Wert kommen sollte. Somit korrigiert.

Dummdidum... Von der Gruppierung ganz zu schweigen :D

[ 01. Oktober 2002: Beitrag editiert von: A.S. ]</p>

Alexandra, die zweite
01.10.2002, 15:14
hi,

DAAAAAANKE! Damit hast du mir 'n Haufen Zeit gerettet; echt klasse!!

Gruß,
Alex