1
我有10個表。表中的1個就是「集線器」。其他用於識別特定的屬性。集線器表包含每個ID,而其他表僅包含該表所需的ID。Mysql查詢連接表,並選擇只有非空行,並具有相同ID
我需要一個連接查詢,它可以根據id連接到任何子表中的所有行,並且可以連接集線器表中的所有行。
因此,例如,如果集線器表中的某個行的ID爲9,並且其中一個子表的ID爲9,則應將它們連接起來。它不應該加入不存在的行,也不能包含空的列。我正在使用Zend-Framework將它們放在一起,但我很樂意接受有關如何在zend-framework或標準php/sql中執行此操作的建議。
這是我現在使用的一個例子,它不工作。此查詢獲取必要的信息,但也包含空行。除此之外,它會刪除子錶行中的id,這是我需要的。
$select = $this->db->select()
->from("widgets")
->joinLeft("widget_login", "widgets.id = widget_login.id")
->joinLeft("widget_admin", "widgets.id = widget_admin.id")
->joinLeft("widget_text", "widgets.id = widget_text.id")
->joinLeft("widget_image", "widgets.id = widget_image.id")
->joinLeft("widget_facebook", "widgets.id = widget_facebook.id")
->joinLeft("widget_twitter", "widgets.id = widget_twitter.id")
->joinLeft("widget_google", "widgets.id = widget_google.id");
追加一個WHERE語句可能是答案,但我不知道這是它。當我添加結果完全爲空時,該語句的語法可能是錯誤的原因。 – Josh
您是否嘗試運行由您自己編寫的普通SQL查詢(如您試圖自動構建的查詢)並查看它返回的內容?有時僅僅因爲我們正在查詢的數據中存在另一個邏輯錯誤/錯誤,返回'null'是正確的。 –