Vinzenz Mai: MySQL SELECT mit dem Resultat einer anderen Anfrage

Beitrag lesen

Hallo Severin,

Es gibt zwei Tabellen (t1 und t2):
t1 sieht in etwas so aus:
ID | NAME | ...

t2 sieht in etwa so aus:
ID | Feld1 | Feld2 | etc.

Die IDs sind also bei beiden Tabelle dasselbe.
Wie kann ich nun den Wert von Feld1 für den Namen "test" herausfinden?

Das ist eine Standardaufgabe für SQL. Die Lösung heisst INNER JOIN.

  
SELECT  
    Feld1  
FROM t2  
INNER JOIN t1 ON t2.ID = t1.ID  
WHERE t1.´NAME´ = 'test'

Es könnte es sich auch um einen OUTER JOIN handeln. Das zu beurteilen, sind Deine Angaben zu dürftig.

Bitte beachte, dass NAME ein schlechter Feldname ist, da es sich um ein reserviertes Wort handelt. Deswegen ist unter unter MySQL die Quotierung mit Backticks erforderlich. Meine Strategie lautet solche Namen zu vermeiden, da jedes DBMS seine eigenen Quotierungsregeln hat.

Bitte beachte ferner, dass die Einträge im Feld NAME nicht unbedingt unterschiedlich sein müssen (es sei denn, Du hast einen Index auf diesem Feld der UNIQUE ist). Somit kannst Du zu einem Namen bereits mehrere Einträge in t1 finden, und somit mehrere Einträge in t2.

Was Du weiterhin nicht erwähnt hast ist die Art der Beziehung zwischen t1 und t2. Es gibt z.B. die 1:1 und die 1:n-Beziehung (die n:m-Beziehung möchte ich hier ausklammern). Kannst Du sicherstellen, dass es zu jedem Eintrag in der Tabelle t1 einen korrespondierenden Eintrag in der Tabelle t2 gibt?

Weitere Informationen zu JOINs findest Du z.B. in diesem Archivposting.

Freundliche Grüße

Vinzenz