phpbar.de logo

Mailinglisten-Archive

[php] OT: mysql klausel gesucht

[php] OT: mysql klausel gesucht

Martin Adler martin.adler at continum.net
Don Aug 24 16:19:35 CEST 2006


Hallo Michael,

Michael Borchers wrote:
> tabelle 1 contacts mit contacts_id etc.
> 
> tabelle 2 cat, die mehrere categorien und werte zu jeder category enthält.
> mehrere davon können auf eine contacts_id zutreffen:
> 
> contacts_id = 1, cat_id =14, cat_val =144
> contacts_id = 1, cat_id =18, cat_val=188
> contacts_id = 2, cat_id =11, cal_val=119
> contacts_id = 2, cat_id =14, cat_val=143
> 
> etc.
> 
> die cats werden via get übergeben und via php bastel ich die klausel 
> zusammen.
> 
> vorerst hatte ich ungefähr folgendes modell:
> 
> SELECT contacts.*, cat.cat_id, cat.cat_val
> FROM contacts, cat
> WHERE
> (cat.cat_id=14 AND cat.cat_value=144)
> AND
> (cat.cat_id=18 AND cat.cat_value=188)
> etc...
> 
> ziel ist es also alle kontakte zu finden, die genau diese kategorien 
> hinterlegt haben.
> 
> so klappts mit der klausel leider nicht. ich vermute das where kann trotz 
> klammern immer nur eine bedingung für die tabelle erfüllen:(
> 
> da muss wohl ein gefuchster JOIN her, kann mir jmd helfen?

Etwas verwirrend ...

SELECT `contacts`.*, `cat`.`id`, `cat`.`val`
FROM `contacts` INNER JOIN `cat` ON `contacts`.`cat_id` = `cat`.`id`
WHERE
     (`cat`.`id` = 14 AND `cat`.`val` = 144)
     OR
     (`cat`.`id` = 18 AND `cat`.`val` = 188)

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.

Mir ist ebenfalls die kombination cat.id und cat.val in der Where-Clause 
nicht ganz geheuer. Dies deutet für mich darauf hin, dass in der Tabelle 
cat eine Kategorie mehrfach eingetragen sein kann jedoch mit einem 
anderen Wert!?

Bei der Konzeption/Design von Datenbanken könnte dir evlt das weiterhelfen:
http://fabforce.net/dbdesigner4/

grüße
Martin


php::bar PHP Wiki   -   Listenarchive