2016-06-14 202 views
0

現在我有點困惑。如何INNER JOIN多表

我有4個表,看起來像這樣:

dog 
ID 
<numerous fields> 
vetID 

client 
ID 
<again, numerous fields i don't think are relevant> 

vet 
ID 
<More irrelevant fields> 

dogclient 
ID 
DogID 
ClientID 

我試圖從所有這些表特定狗的ID得到所有的信息。我想在一個PDO預處理語句

SELECT dog.*, client.*, vet.* 
FROM dogclient 
INNER JOIN client ON dogClient.ClientID = client.ID 
INNER JOIN dog ON dogclient.DogID = dog.ID 
INNER JOIN dog.vetID = vet.ID 
WHERE dogclient.dogID = :id 

結果此查詢是在查詢語法錯誤:

'.ID WHERE dogclient.dogID = '4'' 

誰能幫助我解決這個問題?

+3

啊,我明白了,你沒有加入到獸醫。 'INNER JOIN vet ON dog.vetID = vet.ID' – Uueerdo

+0

簡單:在第三次連接(錯誤消息指向的地方)使用與前兩次相同的語法。 –

+0

在狗客戶端表中的ID似乎沒有任何用處 - 只是說' – Strawberry

回答

2
SELECT dog.*, client.*, vet.* FROM dogclient 
    INNER JOIN client ON dogClient.ClientID = client.ID 
    INNER JOIN dog ON dogclient.DogID = dog.ID 
    INNER JOIN vet ON dog.vetID = vet.ID 
    WHERE dogclient.dogID = :id 

你失蹤的最後內部獸醫表連接

+0

我沒想到結果... vet.Name,在結果中取代了dog.Name ...在那裏SQL中的一種方式來阻止這種情況的發生? (有幾個字段已被替換,因爲兩個表具有相同的字段名稱) –

+0

我不認爲這會發生。最簡單的方法確保它不會特別叫出來 –

+0

這就是我最終做的,謝謝你的幫助:) –