Mailinglisten-Archive |
Am 08.02.2007 um 14:26 schrieb Sebastian Mendel: > gerd schrieb: >> Hallo, >> nach langem Mitlesen hätte ich nun auch mal ein Problem! >> Vielleicht könnt Ihr mir einen Hinweis geben! >> >> Um es gleich zu sagen: es geht nur um "MySQL" und das in den >> Versionen "4.1.12-standard" im Testsystem und "4.0.23-Max-log" im >> Web. >> >> Artikel sind über eine Zwischentabelle mit Kategorien verbunden: >> >> Artikel <- Zwischentabelle -> Kategorien >> >> Jetzt will ich nur die Artikel haben, die mit einem bestimmten Satz >> von Kategorien verbunden sind: z. B. : 'cat1', 'cat2', 'cat3' Ich muß noch nachschieben, das ein gesuchter Artikel auch mit mehr Kategorien als 'cat1', 'cat2', 'cat3' verbunden sein darf! Deshalb sehe ich auch die Lösungen mit mehrfacher Tabellenverwendung kritisch; die Zahl der Kategorien dürfte typischerweise zwischen 3 und 6 liegen. Es werden also alle Artikel gesucht, die mindestens mit den Kategorien : 'cat1', 'cat2', 'cat3' verbunden sind. Alle Kategorien dieser gefundenen Artikel sollen ausgegeben werden . Da ich die Datensätze in Templates mit inneren Schleifen ausgebe, wäre ein solches Ergebnis ideal: artikel.id | kat.name ------------------------------- 3 | cat1 3 | cat2 3 | cat3 3 | cat6 3 | cat9 5 | cat1 5 | cat2 5 | cat3 5 | cat5 Ausgabe z.B.: artikel: 3 cat1 | cat2 | cat3 | cat6 | cat9 artikel: 5 cat1 | cat2 | cat3 | cat5 > ungetestet: > > SELECT > `artikel`.*, > COUNT(`atokat`.`kat_id`) AS `anzahl` > FROM > `artikel` > LEFT JOIN > `atokat` > ON > `atokat`.`artikel_id` = `artikel`.`id` LEFT JOIN `kat` ON `atokat`.`kat_id` = `kat`.`id` AND `kat`.`name` IN ('cat1', 'cat2', 'cat3') > GROUP BY > `artikel`.`id` > HAVING `anzahl` >= 3 Sebastian, ich habe den JOIN zur dritten Tabelle nachgerüstet und die Anzahl nur nach unten begrenzt, bekomme aber auch Artikel mit vollständig anderen Kategorien ausgegeben!? Die Begrenzung auf "`kat`.`name` IN ('cat1', 'cat2', 'cat3')" scheint nicht zugreifen. > > davon ausgehend das (atokat.artikel_id, atokat.kat_id) UNIQUE ist Ja, sehe ich jetzt auch. Muss mindestens bei den COUNT-Lösungen erfüllt sein. Vielleicht will ich auch zuviel für eine Abfrage (ohne Subselect). :-( Danke für alle Ansätze, weitere sind willkommen! Gruß Gerd _______________________________________________ Allgemeine Infos zur Liste: http://www.4t2.com/mysql/ Verwaltung: https://lists.4t2.com/cgi-bin/mailman/listinfo/mysql-de
php::bar PHP Wiki - Listenarchive