2015-01-12 41 views
0

很抱歉,如果我的標題是不是因爲技術,因爲它應該的,只是新的MySQL的東西。加入關於MySQL + 2 3個表,其中命令

我有3張桌子。

  • PC01_CONSULTATIONS,
  • PC02_CONSULTATION_TYPES,
  • PC12_STATUS_CODES。

我給每個表一個簡短的名稱,以便PC01_CONSULTATIONS - PC01,PC02_CONSULTATION_TYPES - PC02,PC12_STATUS_CODES - PC12。

我使用每個表中的相似列這是加入PC01 + PC02"PC01_CONSULTATIONS.PC02_CONS_TYPE_ID""PC02.CONS_TYPE_ID"其中PC02.CONS_TYPE_ID = 1 這是我用

select * from PC01_CONSULTATIONS PC01 

join PC02_CONSULTATION_TYPES PC02 

on PC01.pc02_cons_type_id = PC02.CONS_TYPE_ID 

where PC02.cons_type_id = 1 
  • 最初運行良好的代碼,但現在除了這一切我需要加入第三張表"PC12_STATUS_CODES"。 PC01和PC12之間的類似列是"PC01_ONSULTATIONS.PC12_STATUS_CODE_ID" + "PC12_STATUS_CODES.STATUS_CODE_ID"

  • 如果這是加入到已有的代碼,我有我還需要在另一個「其中」命令添加。究其原因PC12表被加入到代碼,這樣我可以檢索記錄,其中PC12.STATUS_CODE_ID = 2,所以ontop的電流「其中PC02.cons_type_id = 1」我將不得不加入「AND PC12.STATUS_CODE_ID = 2「對嗎?

  • 我發的代碼(這顯然是行不通的)如下,如何正確創建此代碼我可以檢索正確的記錄的任何提示將十分讚賞。謝謝。

    select * from PC01_CONSULTATIONS PC01 
    join PC02_CONSULTATION_TYPES PC02 
    join PC12_STATUS_CODES PC12 
    on PC01.PC02_CONS_TYPE_ID = PC02.CONS_TYPE_ID 
    on PC01.PC12_STATUS_CODE_ID = PC12.STATUS_CODE_ID 
    where PC02.CONS_TYPE_ID = 1 and PC12.STATUS_CODE_ID = 2 
    

回答

0

試試這個:

select * from PC01_CONSULTATIONS PC01  
    join PC02_CONSULTATION_TYPES PC02 on PC01.PC02_CONS_TYPE_ID = PC02.CONS_TYPE_ID 
    join PC12_STATUS_CODES PC12 on PC01.PC12_STATUS_CODE_ID = PC12.STATUS_CODE_ID 
    where PC02.CONS_TYPE_ID = 1 and PC12.STATUS_CODE_ID = 2 
+0

謝謝老兄,是它的工作原理! 那麼您是否可以談談我通過你做了什麼快?像我做錯了什麼,以及你如何糾正它?對此,我真的非常感激! – RyanLynch01

+0

爲了在兩個表之間執行「連接(內部連接)」操作,您需要傳遞應該執行「連接」的列。在你的情況下,對於第一個'join',沒有通過任何列。所以它無法加入兩個表中的列。你的邏輯是對的,但是這些陳述的立場是錯誤的。 –

+0

我明白了,是的,它更有意義,你是如何做到的。謝謝你。 – RyanLynch01

0

你正在寫的請求,假:

這裏是正確的

select * from PC01_CONSULTATIONS PC01  
join PC02_CONSULTATION_TYPES PC02  
on PC01.PC02_CONS_TYPE_ID = PC02.CONS_TYPE_ID 
join PC12_STATUS_CODES PC12  
on PC01.PC12_STATUS_CODE_ID = PC12.STATUS_CODE_ID  
where PC02.CONS_TYPE_ID = 1 and PC12.STATUS_CODE_ID = 2 
+0

是謝謝你的回答,我明白我在那裏現在去錯了。 – RyanLynch01