2016-11-27 53 views
0

我有結果的問題加入3個表時,因爲我在一些地方NULL有一個應該是數字或空單元格時。在MySQL結果是NULL的聯接是左3個表

我在數據庫表:

 

    Table nr 1: rysunek 

    id_rys | nazwa_rys | nazwa_klienta | ... 
    3  |01_116230_C0 |PHILIPS 
    7  |11_002177_A0 |P&G 
    20  |01_101854_B0 |MARS FOOD 
    333 |None   |None 

    (+ 7 columns which do not use in this query) 

 

    Table nr 2: artykul 

    id_art |id_rys |nazwa_art | id_status | ... 
    1  |3  |00_16_1234 | 1 
    2  |7  |00_16_1235 | 3 
    3  |7  |00_16_1236 | 0 
    4  |333 |00_16_1237 | 0 

    (+ 10 columns which do not use in this query) 

 

    Table nr 3: statusy 

    id_status |kod_status 
    1   |IA  
    2   |NC  
    3   |861 

MySQL查詢看起來是這樣的:

SELECT r.nazwa_klienta 
     , r.nazwa_rys 
     , a.nazwa_art 
     , s.kod_status 
    FROM artykul a 
    LEFT 
    JOIN rysunek r 
    ON a.id_rys = r.id_rys 
    LEFT 
    JOIN statusy s 
    ON a.id_status = s.id_status; 

而結果是這樣的:

 

    nazwa_klienta | nazwa_rys | nazwa_art | kod_status 
    NULL   | NULL   | 00_16_1234 | IA 
    NULL   | NULL   | 00_16_1235 | 861 
    P&G   | 11_002177_A0 | 00_16_1236 | NULL 
    None   | None   | 00_16_1237 | NULL 

我需要查詢的結果上面這個樣子:

 

    nazwa_klienta | nazwa_rys | nazwa_art | kod_status 
    PHILIPS  | 01_116230_C0 | 00_16_1234 | IA 
    P&G   | 11_002177_A0 | 00_16_1235 | 861 
    P&G   | 11_002177_A0 | 00_16_1236 | [empty cell] 
    None   | None   | 00_16_1237 | [empty cell] 

應該如何看起來像我的查詢?我嘗試了所有的連接方法,但都沒有工作。 也許我應該改變我的桌子的結構?我等待着從別人的一些建議... :)

+0

因此,從rysunek – Strawberry

回答

0

左聯接是要爲您rysunek列創建空項每當有在該表符合artykul的任何行。如果你不希望他們列出,那麼不要在這兩個表之間使用外連接(我注意到你沒有在你想要的輸出中列出它們)。

對於其他的NULL,從kod_status,因爲它是一個數字列,幾乎是你的選擇是:取空;或者使用COALESCE(kod_status,0)將它變成0,或者將結果轉換爲一個字符串並將其空值轉換爲空字符串。在mysql命令行工具中有命令行選項(你的輸出看起來是從那裏得到的)(參見http://dev.mysql.com/doc/refman/5.7/en/mysql-commands.html),如果這樣可以滿足你的使用模型需求,那麼可以改變它輸出空值的方式。

+0

開始我再次輸出並從artykul和rysunek的表中導入數據,在nazwa_klienta和nazwa_rys中的NULL消失。在kod_status中,我將所有0更改爲1並添加到我的查詢「NOT LIKE'%1%'」中。我不知道這是否是正確的解決方案,但現在形成我可以。感謝您的回答。 –

+0

添加NOT LIKE'%1%'將消除任何地方包含1的任何kod_status,而不僅僅是1的狀態。 (小心) – argoc