phpbar.de logo

Mailinglisten-Archive

[php] SQL-Query

[php] SQL-Query

Axel Tietje a.tietje_(at)_flynet.de
Thu, 29 Apr 1999 14:50:54 +0200


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