Rouven: Joins für Fortgeschrittene

Beitrag lesen

Hello,

Würde diese Query nicht dasselbe Resultat bringen wie Dein Mherfachjoin?

Nein, und zwar weil...

SELECT
FROM Kunden AS KK1
INNER JOIN Kreditkarten AS KK2
ON KK1.KndNr = KK2.KndNr
WHERE KK1.Firma = 'Mastercard' AND KK2.Firma = 'American Express'

KK1 nun die Kundentabelle ist - sie kennt keine Firma, sie weiß nicht was ein "Mastercard ist".  
  
Um dir direkt die dritte Alternative wegzunehmen:  
  

> ~~~sql
  

> SELECT  
> FROM Kunden AS KK1  
> INNER JOIN Kreditkarten AS KK2  
> ON KK1.KndNr = KK2.KndNr  
> WHERE KK2.Firma = 'Mastercard' AND KK2.Firma = 'American Express'  
> 

bringt auch nicht das richtige Ergebnis, weil in der Spalte "Firma" niemals sowohl der Wert Mastercard als auch der Wert American Express stehen kann.

Um dir direkt die vierte Alternative wegzunehmen:

SELECT
FROM Kunden AS KK1
INNER JOIN Kreditkarten AS KK2
ON KK1.KndNr = KK2.KndNr
WHERE KK2.Firma = 'Mastercard' OR KK2.Firma = 'American Express'

bringt auch nicht das richtige Ergebnis, weil hier zwar korrekt überprüft wird, ob der Kunde eine Mastercard ODER eine American Express hat, es jetzt aber keine (direkte) Möglichkeit mehr gibt herauszufinden, ob der Kunde BEIDE Karten hat (was ja gefordert war).  
  
MfG  
Rouven  

-- 
\-------------------  
sh:| fo:} ch:? rl:( br:& n4:{ ie:| mo:} va:) js:| de:] zu:| fl:( ss:) ls:& ([SelfCode](http://selfspezial.atomic-eggs.com/scode/selfcode.php?encodieren))  
  
Buy when there's blood running in the street and sell when everyone is pounding at your door, clawing to own your equities  --  Wisdom on Wallstreet