[gelöst] ORDER BY LIMIT 1 zusammenfassen

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

[gelöst] ORDER BY LIMIT 1 zusammenfassen

Beitrag von marc 70 »

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) 1313 mal betrachtet
Zuletzt geändert von marc 70 am Fr, 17.05.2013 23:56, insgesamt 1-mal geändert.
AOO411m6(Build:9775) unter WIN7 64bit
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: ORDER BY LIMIT 1 zusammenfassen

Beitrag von RobertG »

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
marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

Re: ORDER BY LIMIT 1 zusammenfassen

Beitrag von marc 70 »

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
AOO411m6(Build:9775) unter WIN7 64bit
Antworten