Mailinglisten-Archive |
Moin nochemal, > ... mit einem LEFT JOIN könnte man dir bestimmt helfen > > > SELECT `copy`.*, > MAX(`org`.`val`) AS `maxval` > FROM `org` > LEFT JOIN `org` AS `copy` > ON `org`.`[pk]` = `copy`.`[pk]` > GROUP BY `org`.`[pk]` > HAVING `copy`.`val` = `maxval` > > ... oder so ähnlich ... > > grüße! Ganz so genial ist der Join nun doch nicht. Ich habe unter anderem folgende Felder in meiner Tabelle: buchnr, titel, vorname, autor, beschreibung, fazit, vorschlag. Gegroupt nach den Einträgen in vorschlag soll nun der MAX-Wert des Länge von beschreibung + Länge von fazit ermittelt werden. Der Join dafür sieht folgendermaßen aus: SELECT `b1`.`buchnr` AS buchnr, `b1`.`vorschlag` AS vorschlag, `b1`.`titel` AS titel, `b1`.`vorname` AS vorname, `b1`.`autor` AS autor, LENGTH( CONCAT( `b1`.`beschreibung` , `b1`.`fazit` ) ) AS laenge, max( LENGTH( CONCAT( `b2`.`beschreibung` , `b2`.`fazit` ) ) ) AS laenge2 FROM `buecher` AS b1 LEFT JOIN `buecher` AS b2 ON `b1`.`buchnr` = `b2`.`buchnr` GROUP BY `b1`.`vorschlag` HAVING laenge = laenge2 Insgesamt müsste der Query meiner Meinung nach mindestens 65 Zeilen zurückgeben, laut "SELECT distinct ( vorschlag ) FROM buecher;" existieren so viele verschiedene Einträge. Es sind aber nur 35 Zeilen - kannst du dir (oder besser mir *g*) das erklären? mfg Nico
php::bar PHP Wiki - Listenarchive