Mailinglisten-Archive |
> Korrektur! > > Martin Adler wrote: >> Mir ist die Relation zwischen contacts und cat nicht ganz schlüssig. Aus >> dem beispiel ist zumindest herauszulesen, das jede cat zu mehreren >> contacts zugeordnet werden kann. Scheinbar kann jeder contact nur eine >> cat haben (1:n). >> Wenn jeder contact in deiner Anwendung mehrere cat's haben kann (n:m), >> benötigst wie schon vorgeschlagen eine dritte Tabelle, welche die >> Verknüpfungen herstellt. > > Ich sehe gerade es ist eine n:m Beziehung... > Du brauchst definitiv eine dritte Tabelle. dann konnte der Query so > aussehen. > > SELECT `contacts`.*, `cat`.`id`, `cat`.`val` > FROM > `contacts` INNER JOIN > `contacts_has_cat` ON `contacts`.`id` = > `contacts_has_cat`.`contacts_id` INNER JOIN > `cat` ON `contacts_has_cat`.`cat_id` = `cat`.`id` > WHERE > (`cat`.`id` = 14 AND `cat`.`val` = 144) > OR > (`cat`.`id` = 18 AND `cat`.`val` = 188) > > Hab nun auch gesehen das eine Kategorie auch mehrere Werte enthalten > kann. Diese Werte sollten im Grunde auch in eine extra Tabelle > ausgelagert und mit der Kategorie verknüpft werden. > > So hoffe mir ist nicht wieder weiteres, wesentliches entgangen. es gibt in der tat eine lösung ohne dritte tabelle, nämlich mit subselects. die gehen natürl. erst ab mysql 4.1 ;) bsp: SELECT contacts_id FROM contacts WHERE contacts_id IN ( SELECT contacts_id FROM contacts_categories_values WHERE contacts_categories_id =2 AND contacts_categories_options_id =16 ) LIMIT 0 , 30
php::bar PHP Wiki - Listenarchive