Mailinglisten-Archive |
Hallo Liste! Erstmal Dank an Tobias für die Hilfe beim Filecopy... ich hatte die Permissions falsch gesetzt (aua!). And now for something completely different: Ich habe eine mySQL-Tablelle, die so aussieht: # Tabellenstruktur für Tabelle 'personen_werte' CREATE TABLE personen_werte ( ID int(11) DEFAULT '0' NOT NULL auto_increment, PERSON_ID int(11) DEFAULT '0' NOT NULL, ATTRIBUT_ID int(11) DEFAULT '0' NOT NULL, WERT_ID int(11) DEFAULT '0' NOT NULL, PRIMARY KEY (ID), INDEX (ID)); Jeder Person sind mehrere Attribute zugeordnet. Jedes Attribut kann einen oder mehrere Werte haben, etwa so: ID PERSON_ID ATTRIBUT_ID WERT_ID 1 1 1 1 2 1 2 4 3 2 1 2 4 2 2 4 5 3 1 1 6 3 2 4 Die mySQL-Abfrage soll nun diejenigen Personen herusfiltern, bei denen das Attribut 1 den Wert 1 hat _UND_ das Attribut 2 den Wert 4. Mit anderen Worten: Es sollen als Ergebnis die Datensätze 1,2,5 und 6 angezeigt werden. Anschließend soll das Ergebniss gruppiert werden, damit nicht jede Person zweimal ausgegeben wird. Ich benutze dazu folgenden query-string: SELECT distinct * FROM personen_werte AS t1, riko_personen AS t2 WHERE ( (t1.PERSON_ID = t2.ID AND t1.PERSON_ID = t2.ID AND t1.ATTRIBUT_ID = 1 AND t1.WERT_ID = 1) OR (t1.PERSON_ID = t2.ID AND t1.PERSON_ID = t2.ID AND t1.ATTRIBUT_ID = 2 AND t1.WERT_ID = 5)) GROUP BY t1.PERSON_ID ORDER BY t2.NAME ASC Wenn ich statt dem OR einfach AND schreibe, geht es nicht (keine Datensätze werden gefunden. Logisch eigentlich... Kann sich jemand eine Alternative denken? -- Gruß, Axel. a.tietje_(at)_flynet.de -------------------------------------------------- Source code equals power. Source code is sacred. Trust nobody... From: Software Developers Combat Manual --------------------------------------------------
php::bar PHP Wiki - Listenarchive