2013-03-05 40 views
0

我使用了3個表:如何使用SQL來匹配這個?

第一臺

  • ID
  • 響應

二表

  • responseid
  • patientid

第三表

  • patientid

第一和第二表之間的關係是在idresponceid

第三個和第二個之間的關係在patientid

現在我需要從第二張和第三張表中匹配patientid,像第一張和第三張表中的所有值一樣從這些表中檢索值。

我該怎麼做?

回答

1

你可能一般找INNER JOINJOIN

SELECT 
    response.id, 
    response.responce, 
    patient.patientid 
FROM 
    `response_table` as `response` 
INNER JOIN 
    `relation_table` as `relation` 
ON 
    relation.responceid = response.id 
INNER JOIN 
    `patient_table` as `patient` 
ON 
    relation.patientid = patient.patientid 
2

基本上,如果所有定義他們的關係列不可爲空,則INNER JOIN就足夠了。但是,如果它們是可爲空並且您仍然希望顯示來自firstTB的所有記錄,則需要使用LEFT JOIN而不是INNER JOIN

SELECT a.*, b.*, c.* 
FROM firstTB a 
     INNER JOIN secondTB b 
      ON a.ID = b.responceID 
     INNER JOIN thirdTB c 
      ON b.patientID = c.patientID 

爲了進一步獲得更多的知識有關加入,請訪問以下鏈接:

+1

感謝您的鏈接! – Aris 2013-03-05 15:32:50

+0

@歡迎您':D' – 2013-03-05 15:34:23

0

嘗試

SELECT first.* 
     , third.* 
     FROM first 
INNER JOIN second ON (second.responseid = first.id) 
INNER JOIN third ON (third.patientid = second.patientid) 
     ; 

說實話,並沒有侮辱意,如果你很難提出像這樣的查詢喲你自己,考慮一些關於數據庫基礎知識和數據庫開發的培訓,越快越好(只是希望我沒有錯過自己...... ;-))。