[gelöst] ORDER BY LIMIT 1 zusammenfassen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: [gelöst] ORDER BY LIMIT 1 zusammenfassen

Re: ORDER BY LIMIT 1 zusammenfassen

von marc 70 » Fr, 17.05.2013 23:55

Hallo Robert,

DANKE, super Arbeit...
Kommt ja einiges zusammen an Abfragen.(Hab hier eine Tabelle mit 4 Spalten wovon ich 3 brauche) :shock:

NULLIF passt auch.

noch mal Danke für deine Mühen

Gruß marc

Re: ORDER BY LIMIT 1 zusammenfassen

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

[gelöst] ORDER BY LIMIT 1 zusammenfassen

von marc 70 » Fr, 17.05.2013 15:29

hi,

komme bei der Abfrage nicht weiter.
alles einzeln passt schon mal :)

Code: Alles auswählen

SELECT "mass","text" FROM "Tabelle" WHERE "
"mass" >=  'x'
ORDER BY "mass" ASC LIMIT 1
-----------------------------------------------------------
SELECT "mass","text" FROM "Tabelle" WHERE "
"mass" >=  'y'
ORDER BY "mass" ASC LIMIT 1
-----------------------------------------------------------
SELECT "mass","text" FROM "Tabelle" WHERE "
"mass" <=  'x'
ORDER BY "mass" DESC LIMIT 1
-----------------------------------------------------------
SELECT "mass","text" FROM "Tabelle" WHERE "
"mass" <=  'y'
ORDER BY "mass" DESC LIMIT 1
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 ?

und wenn z.B. x=25 und y=60
dann ist die Ausgabe je SELECT : 25,d ; 60,i ; 25,d ; 60,i
wie kann man dann doppelte werte unterdrücken?

Apache OpenOffice 3.4.1
StarBasic Dialog
HSQLDB intern

vielen Dank im voraus
gruß marc
Dateianhänge
Zwischenablage01.jpg
Zwischenablage01.jpg (8.04 KiB) 1317 mal betrachtet

Nach oben