PDA

Vollständige Version anzeigen : SQL Statement


Charly6000
04.01.2002, 11:12
Wie realisiere ich folgendes mit einem SQL Statement:

Habe eine Abfrage die mir folgendes liefert

NR Vorname Name

zB
120 Fritz Meier
120 Susi Meier
0 Harry Huber

die Nummer (NR) zeigt nur die Zusammengehörigkeit der Personen. 0 bedeutet einzelperson.

Ich möchte jetzt mittels sql die eine abfrage bekommen welche mir folgendes liefert:

ID NR Vorname1 Name1 Vorname2 Name2

zB 1 120 Fritz Meier Susi Meier

wenn jedoch eine 0 also einzelperson ist dann soll
Vorname2 und Name2 leergelassen werden!

Vielen Dank für eure hilfe
charly

A.S.
04.01.2002, 11:14
Dazu erstelle eine neue Abfrage auf Basis der vorhandenen und Benutze den Kreuztabellenassistenten.

HTH

Arno

A.S.
04.01.2002, 12:47
Hallo,

<blockquote><font size="1" face="Arial, Verdana, Helvetica, sans-serif">Zitat:</font><hr>> hallo!!
>
> vielen dank für deine hilfe bzgl. meiner access abfrage!!!
>
> jedoch habe ich noch nie was mit kreuztabelllen gemacht! könntest du
> mir da villeicht ein paar schritte sagen für mein problem??
>
> vielen dank
> charly<hr></blockquote>

Bitte gern geschehen ;)

Hast Du denn den Kreuztabellenassistenten einmal ausprobiert? Der Fragt Dich eigentlich so ziemlich alles ab ;)

Von Hand erstelle ich diese Abfragen in der Regel auch nicht, das ist mir zuviel Aufwand. Ein paar veränderte Kleinigkeiten, aber sonst alles so wie der Assi es mir hinstellt ;)

Gruß

Arno

PS @All: Bitte führt die Beiträge im Forum weiter, wenn ihr mit den gegebenen Tips nicht unbedingt klarkommt. Es kann sein das derjenige der Euch geantwortet hat nicht unbedingt seine EMails regelmäßig überprüft oder gerade keine Zeit dafür hat.

Damit Euch schnell geholfen werden kann ist das Forum da ;) Hier sind so viele unterwegs, die Euch bei euren Problemen gerne helfen, da ist kaum eine EMail schneller ;)

Charly6000
05.01.2002, 10:24
und wie gehe ich das ganze problem mit kreuztabellenabfrage an???

kannst du mir da einige tipps geben??

grüße
charly

A.S.
05.01.2002, 11:23
Guten Morgen Charly,

hurga.. sorry, hatte Deine Anfrage als einfacher eingeschätzt, als sie ist ;) :D

Für eine Aufbereitung per Kreuztabellenabfrage sind das zuwenig Informationen, da Du ja Nachname und Vorname in einer Zeile stehen haben willst...

Bevor ich mich daran mache da etwas zu erklären...

- können Vorname und Nachname zu einer Einheit zusammengefaßt werden?
- ist es für Dich problematisch, wenn wir eine Pseudo-Information in die vorbereitende Abfrage einfügen?

Gruß

Arno

Charly6000
05.01.2002, 11:51
Guten Morgen!!!

1) zusammenfassen ist hier nicht gut, da die einzelnen felder dann weiterverarbeitet werden!

vielleicht erkläre iches nochmals was ich möchte!

ich habe eien abfrage die folgendes liefert:

NR Vorname Nachname

(wobei nummer eine zusammengehörigkeit von paaren bestimmt. NR 0 bedeutet dass der jenige eine einzelperson ist!)

ich möchte jetzt eine abfrage auf dieser abfrage haben welche mir die zusammengehörigen folgendermaßen ausgibt:

NR Vorname1 Name1 Vorname2 Name2

und wenn eine NR 0 (also einzele Person vorkommt wird diese einfach in Vorname1 und Name1 reingeschrieben und Vorname2 + Name2 bleibt leer!

Ich hoffe das ist zu verstehen!

Vielen Dank für deine Bemühungen!!

Grüße
Charly

boolean
05.01.2002, 19:22
Hallo Charly,

Für dein Problem müßt du mehrere Unterabfragen erstellen.

Beispiel:

Tabelle1 beinhaltet die Namen mit den Nummern, Abfrage - Namen zeigt alle Namen die zusammengehören. Abfrage - Verknüpfte Namen ist die letztendliche Abfrage, die alle zusammengehörigen Namen mit den Einzelnamen verbindet.

Die ausgabe der Abfrage - Verknüpfte Namen: Nr, Vorname1, Nachname1, Vorname2, Nachname2

Für mehr als 2 zusammengehörige Namen solltest Du dir ein anderes Abfragemodel überlegen

Tabelle1
Id, Nr, Vorname, Nachname

Auswahlabfrage: Namen
SQL:
SELECT A.Nr, First(A.Vorname1) AS Vorname1, First(A.Nachname1) AS Nachname1, First(A.Vorname2) AS Vorname2, First(A.Nachname2) AS Nachname2
FROM (SELECT Tabelle1.Nr, Tabelle1.Vorname AS Vorname1, Tabelle1.Nachname as Nachname1, Tabelle1_1.Vorname as Vorname2, Tabelle1_1.Nachname AS Nachname2
FROM Tabelle1 LEFT JOIN Tabelle1 AS Tabelle1_1
ON Tabelle1.Nr = Tabelle1_1.Nr AND Tabelle1.ID NOT LIKE Tabelle1_1.ID) AS A
GROUP BY A.Nr
HAVING (((A.Nr) Not Like 0));

Auswahlabfrage: Verknüpfte Namen
SQL:
SELECT Tabelle1.Nr, Tabelle1.Vorname AS Vorname1, Tabelle1.Nachname AS Nachname1, Namen.Vorname2, Namen.Nachname2
FROM Namen RIGHT JOIN Tabelle1 ON Namen.Nr = Tabelle1.Nr
WHERE ((([Tabelle1].[Vorname] & [Tabelle1].[Nachname]) Not Like [Namen].[Vorname2] & [Namen].[Nachname2])) OR (((Tabelle1.Nr)=0));

mfg boolean

MarioR
05.01.2002, 20:44
Hallo Charly,

so müsste es auch gehen:

SELECT DeineAbfrage.NR,
DeineAbfrage.Vorname AS Vorname1,
DeineAbfrage.Nachname AS Nachname1,
DeineAbfrage_1.Vorname AS Vorname2,
DeineAbfrage_1.Nachname AS Nachname2
FROM DeineAbfrage
INNER JOIN DeineAbfrage AS DeineAbfrage_1
ON DeineAbfrage.NR = DeineAbfrage_1.NR
WHERE DeineAbfrage.NR <> 0
AND DeineAbfrage.Vorname < DeineAbfrage_1.Vorname
UNION
SELECT DeineAbfrage.NR, DeineAbfrage.Vorname,
DeineAbfrage.Nachname, Null, Null
FROM DeineAbfrage
WHERE DeineAbfrage.NR = 0;


Ist Dein Feld NR vom Typ Text, musst Du natürlich auf <> "0" und = "0" testen.

Charly6000
06.01.2002, 00:23
Vielen Dank! Erster Teil funktioniert schon!!!

Schöne Grüße
Charly