Einzelnen Beitrag anzeigen
Alt 16.10.2008, 13:02  
agrajag
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

So auf den ersten Blick würde ich sagen:
In der WHERE-Bedingung muss es k1.kat LIKE '%eins%' lauten und das hier: (k2.kat NOT LIKE '%zwei%') solltest du weglassen (da du ja schon in der ON-Bedingung k2.kat LIKE ... sehen hast)

Also ungefähr so:
Code:
SELECT 
    *
FROM
    person p
JOIN
    personzukat z1
ON
    z1.zuperson = p.ident
JOIN
    kategorie k1
ON
    k1.ident = z1.zukat
JOIN
    personzukat z2
ON
    z2.zuperson = p.ident
LEFT JOIN
    kategorie k2
ON
    k2.ident=z2.zukat AND k2.kat LIKE '%zwei%'
WHERE
    LOWER(k2.kat) LIKE '%eins'
    AND
    k2.ident IS NULL
Die vielen LIKE '%..%' abfragen können dir aber noch das Genick brechen, da so kein Inde genutzt werden kann. Wozu muss das LIKE sein?
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten