2009-11-10 86 views
0

我有一些關係型MySQL數據庫,有數十個表...我的查詢長度爲1000英尺,並從幾乎所有的表中選擇數據...我也有我的'主'表,而所有其他表格都是指那一個。當我在主表中輸入一行時,並在其他表中創建該行的所有關係時,我的查詢正常工作。但是,如果我在主表中輸入一行,而在其他地方我輸入空集。但我想在我的結果中至少得到這些信息。或者,當然,所有在其他表格中輸入的信息,無論某些表格沒有該記錄(行)的信息...在MySQL關係數據庫中選擇數據時的空集

感謝您的幫助!

更新:

我不使用JOIN語法和我的查詢看起來與此類似:

$query = "SELECT a.*, b.*, c.*, d.*, e.*, f.*"; 
$query .= " FROM a, b, c, d, e, f"; 
$query .= " WHERE a.aID = b.aID"; 
$query .= " AND b.bID = c.bID"; 
$query .= " AND b.bID = d.bID"; 
$query .= " AND b.bID = e.bID"; 
$query .= " AND b.bID = f.bID"; 
+0

我們可以看到查詢?你的問題很抽象。 – 2009-11-10 16:33:15

+0

你現在的問題是無法回答的。請發佈您的架構,查詢和一些示例數據。 – Quassnoi 2009-11-10 16:34:21

回答

3

你的問題現在很模糊,但最有可能是由於事實上,您使用INNER JOIN s而不是LEFT JOIN s。

這個查詢:

SELECT * 
FROM main 
JOIN secondary 
ON  secondary.main_id = main.id 

將返回咱這secondary是空的。

這個查詢:

SELECT * 
FROM main 
LEFT JOIN 
     secondary 
ON  secondary.main_id = main.id 

將在main返回至少一個記錄,每個記錄,與NULL小號取代次級領域,如果沒有匹配的記錄secondary

更新:

JOIN語法使用(枚舉表和WHERE子句中提供JOIN條件)假設INNER JOIN秒。

假設a是「主」表,重寫查詢,因爲這:

SELECT a.*, b.*, c.*, d.*, e.*, f.* 
FROM a 
LEFT JOIN 
     b 
ON  b.aID = a.aID 
LEFT JOIN 
     с 
ON  c.bID = b.bID 
LEFT JOIN 
     d 
ON  d.bID = b.bID 
LEFT JOIN 
     e 
ON  e.bID = b.bID 
LEFT JOIN 
     f 
ON  f.bID = b.bID 
+0

這可以按預期工作......我認爲你和我的查詢沒有區別,但顯然這就是我一直在尋找的!非常感謝你的幫助... – errata 2009-11-12 10:29:22