PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwei Tabellen kombinieren???


Caspar
27.11.2003, 10:45:27
Hallo Profis,

ich hab da ein etwas kompliziertes problem... ich hoffe ihr könnt
mir vieleicht trotzdem helfen.
Ich habe in einer MySQL Datenbank Personendaten, die mit einer
anderen Tabelle zu einer Firma verweisen.
Personen - n:n - Firma

jetzt will ich mit einer SQL abfrage alle personen zurückbekommen
die NICHT in dieser Firma arbeiten.

Bsp:

Personen Firmen
---------- --------
1 Maier 1 Kreise AG
2 Kunz 2 Edika GmbH
3 Stein 3 Aldi

Meier arbeitet bei Aldi und bei Kreise AG

jetzt seteht in der Beziehungstabelle

tbl_arbeitet
1 | 1
1 | 3

das problem ist wenn ich schreibe:
SELECT p.person_ID
FROM tbl_person as p
left JOIN tbl_occupation
USING ( person_ID ) where firmen_ID<>1 group by p.person_ID

kommt Maier natürlich auch, weil er ja auch als firmen_ID einmal die 3 hat :(

ich will aber als ergebniss dann nur 2, 3 haben, geht das?

Mein Ansatz wäre, ich frage erst ab welche Personen in der DB sind und filtere die dann raus die in Firma 1 arbeiten, nur wie ist die Frage...

Danke schön mal im Vorraus,
viele Grüße Euer CaS

MiH
27.11.2003, 11:08:17
tbl firma
faid | name
1 | Edeka
2 | Kaufland
3 | Obi

tbl Mitarbeiter
maid | name
1 | Maier
2 | Schulze
3 | Otto

tbl Arbeitsort
faid | maid
1 | 1
2 | 1

abfragen, wo Maier nicht ist:

select firma.name from firma
left join mitarbeiter using maid where firma.faid is null

Caspar
27.11.2003, 12:24:29
Hi,

danke für die schnell antwort...
habe aber noch eine kleine Frage:

angenommen Mitarbeiter 2 würde in Firma 2 arbeiten dann würde die Tabelle sich ja erweitern:

tbl Arbeitsort
faid | maid
1 | 1
2 | 1
2 | 2

jetzt würde ich mit deiner abfrage 'is null' aber keinen
Schulze mehr bekommen weil er ja nicht null ist sondern 2, oder liege ich da falsch?

MiH
27.11.2003, 14:22:39
select firma.name from firma
left join mitarbeiter using maid where firma.faid is null
where mitarbeiter.maid = 2