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