Man habe folgende Tabelle: Darauf habe ich folgende Abfrage:
Code: Alles auswählen
SELECT
"b"."Vorname",
"b"."Nachname",
"b"."Adresse",
(SELECT COUNT( CONCAT( "a"."Nachname", "a"."Adresse" ) ) FROM "Tab_Adresse" AS "a"
WHERE CONCAT( "a"."Nachname", "a"."Adresse" ) =
CONCAT( "b"."Nachname", "b"."Adresse" ) ) AS "Vorkommen",
(SELECT COUNT( * ) FROM "Tab_Adresse" AS "X"
WHERE (CONCAT("X"."Nachname",CONCAT("X"."Adresse","X"."Vorname"))) <
CONCAT("b"."Nachname",CONCAT("b"."Adresse","b"."Vorname") ) )+ 1 AS "Nummerierung"
FROM (
SELECT * from "Tab_Adresse" AS "a"
) AS "b"
ORDER BY "b"."Nachname", "b"."Adresse","b"."Vorname"
Code: Alles auswählen
SELECT DISTINCT
"n"."Nachname",
CASE
WHEN
"Vorkommen" = '1'
THEN
"n"."Vorname"
WHEN
"Vorkommen" = '2'
AND "n"."Nummerierung" = "m"."Nummerierung"-1
AND CONCAT( "n"."Nachname", "n"."Adresse" ) =
CONCAT( "m"."Nachname", "m"."Adresse" )
THEN
CONCAT( "n"."Vorname",
CONCAT( ' und ' ,
SELECT "o"."Vorname" FROM "Tab_Adresse2" AS "o" WHERE "n"."Nummerierung" = "o"."Nummerierung"-1))
WHEN
"Vorkommen" = '3'
AND "n"."Nummerierung" = "m"."Nummerierung"-1
AND "n"."Nummerierung" = "p"."Nummerierung"-2
AND CONCAT( "n"."Nachname", "n"."Adresse" ) = CONCAT( "m"."Nachname", "m"."Adresse" )
AND CONCAT( "m"."Nachname", "m"."Adresse" ) = CONCAT( "p"."Nachname", "p"."Adresse" )
AND CONCAT( "p"."Nachname", "p"."Adresse" ) = CONCAT( "n"."Nachname", "n"."Adresse" )
THEN
CONCAT( "n"."Vorname",
CONCAT( ' und ' ,
CONCAT( SELECT "q"."Vorname" FROM "Tab_Adresse2" AS "q" WHERE "n"."Nummerierung" = "q"."Nummerierung"-1 ,
CONCAT( ' und ' ,
SELECT "w"."Vorname" FROM "Tab_Adresse2" AS "w" WHERE "n"."Nummerierung" = "w"."Nummerierung"-2
))))
WHEN
"Vorkommen" > '3'
THEN
'Familie'
ELSE
''
END AS "Vorname"
,"n"."Adresse"
FROM
"Tab_Adresse2" AS "n", "Tab_Adresse2" AS "m", "Tab_Adresse2" AS "p"
WHERE "Vorname" <> ''
Gibt es keinen Weg, so à la
Code: Alles auswählen
...WHERE ( *die erste Abfrage* ) AS "Tab_Adresse2"