Autor |
Nachricht |
achwasweisich
Threadersteller
Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht:
|
Verfasst Di 11.12.2007 11:53
Titel SQL-Syntax |
|
|
Ich hab eine Lösung,die funktioniert.
Was mich interessiert: gibt es eine bessere Lösung?
Also, zwei Tabellen mal zum Beispiel:
Leute und Fotos
nun will ich alle Leute finden, die vom Typ 5 sind.(Feld mytype)
Außerdem gibt es eine Tabelle Fotos, in der zu jeder Person kein, ein, oder mehrere Fotos
gespeichert sind. Ich möchte jeweils das Foto mit der niedrigsten Sortierungsnummer (Feld mysort)
oder eben kein Foto, wenn keins vorhanden ist.
Code: | SELECT L.id, F.dateiname, F.mysort FROM leute AS L
LEFT JOIN fotos AS F ON L.id = F.idleute
WHERE (L.mytype = 5
AND (F.mysort = (
SELECT min( mysort ) FROM fotos WHERE idleute = L.id
) OR ((SELECT count(*) FROM fotos WHERE idleute=L.id)=0))
)
GROUP BY L.id |
Wie geht das eleganter?
|
|
|
|
|
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht:
|
Verfasst Di 11.12.2007 12:05
Titel
|
|
|
sieht doch soweit gut aus.
nur, wenn mysort grundsätzlich positiv ist, kannst du dir doch das or-statement sparen, oder?
dann ist doch 0 = min(mysort)...?
|
|
|
|
|
Anzeige
|
|
|
bacon
Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Di 11.12.2007 12:15
Titel
|
|
|
Anstelle des Subselects könntest du auch einen einfachen äußeren JOIN der Tabelle Personen und Photos machen, um dann über die MAX(order) bzw. MIN(order) zu aggregieren.
SELECT p.trallala, MIN(b.mysort) FROM personen p, bilder b
WHERE p.id = b.personenId
AND p.mytype = 5
GROUP BY p.trallala
... oder so
|
|
|
|
|
achwasweisich
Threadersteller
Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht:
|
Verfasst Di 11.12.2007 12:20
Titel
|
|
|
@pixelpapst
Ja, aber es kann sein, daß kein Foto zur Person vorhanden ist.
In dem Fall gäbe es kein min(F.mysort) Ergebnis.
Zuletzt bearbeitet von achwasweisich am Di 11.12.2007 12:20, insgesamt 1-mal bearbeitet
|
|
|
|
|
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht:
|
Verfasst Di 11.12.2007 12:23
Titel
|
|
|
ah klar, da haste natürlich recht mein fehler...
|
|
|
|
|
achwasweisich
Threadersteller
Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht:
|
Verfasst Di 11.12.2007 12:27
Titel
|
|
|
bacon hat geschrieben: | Anstelle des Subselects könntest du auch einen einfachen äußeren JOIN der Tabelle Personen und Photos machen, um dann über die MAX(order) bzw. MIN(order) zu aggregieren.
... oder so |
Nee, gleiches Problem: wenn kein Bild vorhanden ist, liefert mir dieses Statement nicht die entsprechenden Einträge aus p zurück.
|
|
|
|
|
pixelpapst303
Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht:
|
Verfasst Di 11.12.2007 12:37
Titel
|
|
|
warum willst du dein query denn noch verfeinern - sind die antwortzeiten zu hoch, oder ists deine diplomarbeit??
|
|
|
|
|
achwasweisich
Threadersteller
Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht:
|
Verfasst Di 11.12.2007 13:01
Titel
|
|
|
Ich will wissen, ob das amateurhaftes Zusammengewurschtel von Halbwissen ist,
oder ob man sich mit sowas blicken lassen kann.
|
|
|
|
|
|
|
|
Ähnliche Themen |
Syntax bei JavaScript
: syntax error, unexpected '<' in
MGI Nonprint - NAO WIF SYNTAX HAILAIZ
Dot-Syntax bei ActionScript - HILFE
[MySql]Problem mit Syntax in Query
DW - Syntax-Highlightning für andere Dateiendungen
|
|