PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Hauptdatensatz auslesen


hans197849
06.07.2009, 00:35:56
Hallo,

ich habe eine Tabelle die aus den Spalten 'id','deepID','titel' und weiteren besteht. Ich möchte nun alle Datensätze auslesen, wenn aber die deepID > 0 ist sollen nicht die werte der aktuellen zeile genommen werden sondern von dort wo 'deepID'='id'.

So habe ich es bisher, finde das so aber nicht optimal.
SELECT im.`indexID`,im.`title`,im2.`more` FROM `index` im,`index` im2 WHERE IF(im.`deepID`>0,im.`deepID`,im.`indexID`)=im2.`indexID` ORDER BY `title`

Dann habe ich noch folgendes, funktioniert nicht, ich denke aber dieser Ansatz ist performanter (?)
SELECT IF(im.`deepID`>0) THEN (SELECT im2.`title` FROM `av_index_manga` im2 WHERE im2.`index_mangaID`=im.`deepID`) ELSE im.`title` END IF FROM `av_index_manga` im

Crisps
06.07.2009, 06:00:12
Hallo,
Hallo

So habe ich es bisher, finde das so aber nicht optimal.

Warum denkst du, dass das nicht optimal ist? Meiner Meinung nach ist das schon ziemlich perfekt und ich kann mir eigentlich keinen besseren Weg vorstellen.

Dann habe ich noch folgendes, funktioniert nicht, ich denke aber dieser Ansatz ist performanter (?)

Mal davon abgesehen, dass die Abfrage nicht das gewünschte Ergebnis bringt; diese Lösung mit einer extra Unterabfrage ist sicherlich nicht performanter als das oben gepostete Beispiel.

hans197849
17.07.2009, 16:52:33
Danke für die Antwort.

Warum denkst du, dass das nicht optimal ist? Meiner Meinung nach ist das schon ziemlich perfekt und ich kann mir eigentlich keinen besseren Weg vorstellen.Nun ja ich dachte da für die Haupteinträge ein Join unnötig wäre gäbe es da noch einen besseren Weg. Aber wenn dem nicht so ist kann ich es ja so benutzten. Funktionieren tut es ja.