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
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