mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Di 23.04.2024 19:14 Benutzername: Passwort: Auto-Login

Thema: SQL-Syntax vom 11.12.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> SQL-Syntax
Seite: 1, 2  Weiter
Autor Nachricht
achwasweisich
Threadersteller

Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht: Männlich
Verfasst Di 11.12.2007 11:53
Titel

SQL-Syntax

Antworten mit Zitat Zum Seitenanfang

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?
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Di 11.12.2007 12:05
Titel

Antworten mit Zitat Zum Seitenanfang

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)...? * Keine Ahnung... *
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
bacon

Dabei seit: 24.10.2007
Ort: -
Alter: -
Geschlecht: -
Verfasst Di 11.12.2007 12:15
Titel

Antworten mit Zitat Zum Seitenanfang

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 Grins
  View user's profile Private Nachricht senden
achwasweisich
Threadersteller

Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht: Männlich
Verfasst Di 11.12.2007 12:20
Titel

Antworten mit Zitat Zum Seitenanfang

@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
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Di 11.12.2007 12:23
Titel

Antworten mit Zitat Zum Seitenanfang

ah klar, da haste natürlich recht *zwinker* mein fehler...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
achwasweisich
Threadersteller

Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht: Männlich
Verfasst Di 11.12.2007 12:27
Titel

Antworten mit Zitat Zum Seitenanfang

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 Grins


Nee, gleiches Problem: wenn kein Bild vorhanden ist, liefert mir dieses Statement nicht die entsprechenden Einträge aus p zurück.
  View user's profile Private Nachricht senden
pixelpapst303

Dabei seit: 06.07.2006
Ort: hamburg
Alter: 50
Geschlecht: Männlich
Verfasst Di 11.12.2007 12:37
Titel

Antworten mit Zitat Zum Seitenanfang

warum willst du dein query denn noch verfeinern - sind die antwortzeiten zu hoch, oder ists deine diplomarbeit?? Grins
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
achwasweisich
Threadersteller

Dabei seit: 27.09.2007
Ort: Stuttgarter Raum
Alter: -
Geschlecht: Männlich
Verfasst Di 11.12.2007 13:01
Titel

Antworten mit Zitat Zum Seitenanfang

Ich will wissen, ob das amateurhaftes Zusammengewurschtel von Halbwissen ist,
oder ob man sich mit sowas blicken lassen kann. *zwinker*
  View user's profile Private Nachricht senden
 
Ä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
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.