MySQL Joins - Steh mal wieder auf dem Schlauch..

WhiZZler

Chancentod²
ID: 85586
L
6 Mai 2006
588
32
begrüße!

ist wahrscheinlich ne verdammt einfache sache, aber ich komm grade irgendwie nich drauf :/

ich habe zwei tabellen:

attributes:
attribute_id | attribute

documentation:
attribute_id | process_id | content

in attributes sind allgemeine attribute für die prozesse definiert (zb: zwecke und ziele, Geltungsbereich, usw.. hat ne eigene tabelle, damit die attribute flexibel angepasst werden können)

jetzt sollen zu einem prozess die zugehörigen attribute ausgelesen werden.. soweit kein problem:
Code:
SELECT a.attribute, d.content
FROM attributes a
LEFT JOIN documentation d
USING(attribute_id)
WHERE d.process_id = 5

so werden allerdings nur die attribute ausgelesen, zu deren attribute_id und der gegebenen process_id auch ein eintrag in der tabelle documentation steht

ich brauche an einer stelle im script aber alle attribute, die in "attributes" gespeichert sind, egal ob dazu in der "documentation" ein eintrag steht..

ist das mit einem query überhaupt realisierbar?

vielen dank im vorraus,
mfg
whizzler
 
Hab ich das jetzt richtig verstanden?

Code:
SELECT a.attribute, d.content
FROM attributes a
LEFT JOIN documentation d
ON a.attribute_id = d.attribute_id
WHERE d.process_id = 5

Da werden aber nur die ausgelsen, wo d.process_id was drin steht.

Code:
SELECT a.attribute, d.content
FROM attributes a
LEFT JOIN documentation d
ON a.attribute_id = d.attribute_id
WHERE d.process_id = 5 OR d.process_id IS NULL

So muss entweder 5 oder der Eintrag nicht vorhanden sein ;)
 
mit WHERE d.process_id IS NULL habe ich es auch schon probiert.. hat aber leider nichts geholfen.. auch so werden nur die sachen ausgelesen, zu denen eintrag mit zugehöriger process_id und attribute_id in der tabelle "documentation" ist
 
Hast dus auch mit ON statt USING probiert?

Code:
SELECT a.attribute, d.content
FROM attributes a
LEFT  JOIN documentation d ON a.attribute_id = d.attribute_id
AND d.process_id =5

liefert bei mir das gewünschte Ergebnis;)