2017-12-11 6 views
0

Ich habe drei Tabellen in einer Datenbank: makers, parts, transfers.Join mehrere mysql Tabellen

Makers ist makerid,stampname

Parts ist categories,name

variations ist id, provider, recipient, part

Provider ein Zeiger auf makers/makerid ist und so ist recipients.

Ich muss abfragen, so dass mein Ergebnis den Anzeigenamen im Vergleich zu den codierten/vereinfachten Datenbank-IDs zeigt.

Ich habe einige der bewährten Joins aber meine Frage:

select makers.stampname as giver, makers.stampname as takers 
from makers 
    left join variations prov on prov.provider=makers.makerid 
    left join variations recp on recp.recipient=makers.makerid limit 5; 

den gleichen Namen in beiden Spalten ergibt. Wenn die provider ist makerid 24 und die recipient ist makerid 10, wie bekomme ich eine Abfrage mit der übereinstimmenden stampname aus der makers db zu reagieren?

+0

Bitte geben Sie einige Beispieldaten und erwartetes Ergebnis. –

Antwort

0

Sorry, es sieht so aus, als müsste man Aliasing besser verstehen. Das hat perfekt funktioniert:

select variations.date,provider.stampname as provname , 
recipient.stampname as recipname, 
parts.name from variations 
left outer join 
makers provider on variations.provider = provider.makerid 
left outer join 
makers recipient on variations.recipient = recipient.makerid 
left join categories parts on variations.part = parts.catid 
where variations.provider = "20" 
and 
variations.date="1944";