2010-03-29 43 views
0

如果您正在加入的其中一個表沒有任何用戶在其中的數據,您將如何處理聯接語句。當一個表中沒有數據時,通過PHP連接MySQL JOIN?

例如:

-user_1列在所有表中。

-user_2在table_1,table_2和table_3中列出,但不在table_4中列出。

以下查詢失敗,因爲user_2不在table_4中。

$query = "SELECT table_1.username, table_2.car, table_3.bike, table_4.plane 
    FROM table_1 
    JOIN table_2 
     ON table_1.username=table_2.username 
    JOIN table_3 
     ON table_1.username=table_3.username 
    JOIN table_4 
     ON table_1.username=table_4.username 
    WHERE table_1.username = 'user_2'"; 

回答

1

看着一個外部連接。它允許記錄在一側,但在另一側是可選的(左側外側/右側外側)。如果在「其他」表上找不到記錄,則其列在結果集中將導致爲NULL,因此請小心處理。

2

通常在這種情況下,您應該查看LEFT JOIN

喜歡的東西

SELECT table_1.username, table_2.car, table_3.bike, table_4.plane 
    FROM table_1 
    JOIN table_2 
     ON table_1.username=table_2.username 
    JOIN table_3 
     ON table_1.username=table_3.username 
    LEFT JOIN table_4 
     ON table_1.username=table_4.username 
    WHERE table_1.username = 'user_2' 

這也可能是這種情況,那麼在任何其他表的,因此,即使這可能是更有益的

SELECT table_1.username, table_2.car, table_3.bike, table_4.plane 
    FROM table_1 
    LEFT JOIN table_2 
     ON table_1.username=table_2.username 
    LEFT JOIN table_3 
     ON table_1.username=table_3.username 
    LEFT JOIN table_4 
     ON table_1.username=table_4.username 
    WHERE table_1.username = 'user_2' 
相關問題