von RobertG » Fr, 17.05.2013 19:16
Hallo Marc,
marc 70 hat geschrieben:
wenn z.B. X=23 y=57
dann ist die Ausgabe je SELECT : 25,d ; 60,i ; 20,c ; 50,h
Wie kann man die ganze Abfrage zusammenfassen als ein SELECT ?
Code: Alles auswählen
SELECT "mass","text" ,
(SELECT "mass" FROM "Tabelle" WHERE "mass" >= '57' ORDER BY "mass" ASC LIMIT 1) AS "mass2",
(SELECT "text" FROM "Tabelle" WHERE "mass" >= '57' ORDER BY "mass" ASC LIMIT 1) AS "text2"
FROM "Tabelle" WHERE "mass" >= '23' ORDER BY "mass" ASC LIMIT 1
Du darfst beim Zusammenfassen immer nur eine Wert mit einer Abfrage ermitteln. Der obige Code zeigt jetzt also bei Deiner Tabelle
25,d,60,i
an.
Die Doppelwerte kannst Du zwar unterdrücken, die Spalten selbst werden aber bleiben:
Code: Alles auswählen
SELECT "mass","text" ,
(SELECT "mass" FROM "Tabelle" WHERE "mass" >= '60' ORDER BY "mass" ASC LIMIT 1) AS "mass2",
(SELECT "text" FROM "Tabelle" WHERE "mass" >= '60' ORDER BY "mass" ASC LIMIT 1) AS "text2",
NULLIF(
(SELECT "mass" FROM "Tabelle" WHERE "mass" <= '25' ORDER BY "mass" DESC LIMIT 1),
"mass" ) AS "mass3",
NULLIF(
(SELECT "text" FROM "Tabelle" WHERE "mass" <= '25' ORDER BY "mass" DESC LIMIT 1),
"text" ) AS "text3",
NULLIF(
(SELECT "mass" FROM "Tabelle" WHERE "mass" <= '60' ORDER BY "mass" DESC LIMIT 1),
(SELECT "mass" FROM "Tabelle" WHERE "mass" >= '60' ORDER BY "mass" ASC LIMIT 1) ) AS "mass4",
NULLIF(
(SELECT "text" FROM "Tabelle" WHERE "mass" <= '60' ORDER BY "mass" DESC LIMIT 1),
(SELECT "text" FROM "Tabelle" WHERE "mass" >= '60' ORDER BY "mass" ASC LIMIT 1) ) AS "text4"
FROM "Tabelle"
WHERE "mass" >= '25'
ORDER BY "mass" ASC LIMIT 1
Gruß
Robert
Hallo Marc,
[quote="marc 70"]
wenn z.B. X=23 y=57
dann ist die Ausgabe je SELECT : 25,d ; 60,i ; 20,c ; 50,h
Wie kann man die ganze Abfrage zusammenfassen als ein SELECT ?[/quote]
[code]SELECT "mass","text" ,
(SELECT "mass" FROM "Tabelle" WHERE "mass" >= '57' ORDER BY "mass" ASC LIMIT 1) AS "mass2",
(SELECT "text" FROM "Tabelle" WHERE "mass" >= '57' ORDER BY "mass" ASC LIMIT 1) AS "text2"
FROM "Tabelle" WHERE "mass" >= '23' ORDER BY "mass" ASC LIMIT 1[/code]
Du darfst beim Zusammenfassen immer nur eine Wert mit einer Abfrage ermitteln. Der obige Code zeigt jetzt also bei Deiner Tabelle
25,d,60,i
an.
Die Doppelwerte kannst Du zwar unterdrücken, die Spalten selbst werden aber bleiben:
[code]SELECT "mass","text" ,
(SELECT "mass" FROM "Tabelle" WHERE "mass" >= '60' ORDER BY "mass" ASC LIMIT 1) AS "mass2",
(SELECT "text" FROM "Tabelle" WHERE "mass" >= '60' ORDER BY "mass" ASC LIMIT 1) AS "text2",
NULLIF(
(SELECT "mass" FROM "Tabelle" WHERE "mass" <= '25' ORDER BY "mass" DESC LIMIT 1),
"mass" ) AS "mass3",
NULLIF(
(SELECT "text" FROM "Tabelle" WHERE "mass" <= '25' ORDER BY "mass" DESC LIMIT 1),
"text" ) AS "text3",
NULLIF(
(SELECT "mass" FROM "Tabelle" WHERE "mass" <= '60' ORDER BY "mass" DESC LIMIT 1),
(SELECT "mass" FROM "Tabelle" WHERE "mass" >= '60' ORDER BY "mass" ASC LIMIT 1) ) AS "mass4",
NULLIF(
(SELECT "text" FROM "Tabelle" WHERE "mass" <= '60' ORDER BY "mass" DESC LIMIT 1),
(SELECT "text" FROM "Tabelle" WHERE "mass" >= '60' ORDER BY "mass" ASC LIMIT 1) ) AS "text4"
FROM "Tabelle"
WHERE "mass" >= '25'
ORDER BY "mass" ASC LIMIT 1[/code]
Gruß
Robert