1
這個問題更進一步於2012年3月回覆。這是4個月後,我提出了一個新問題。參考:MySQL LEFT JOIN - Values can be NULL,因爲它代表MySQL LEFT JOIN NULL值
我的SQL語句低於:
SELECT cs.case_id, cs.child_firstname, gu.*
FROM tblcases AS cs
LEFT JOIN tblguardians AS gu
ON cs.case_id = gu.case_id AND gu.firstname LIKE '%Craig%'
WHERE cs.child_firstname LIKE '%Sally%'
這工作得很好:
- 如果兩個值(根據上面的例子)設置。
- 如果cs.child_firstname設置和gu.firstname是一個通配符只能
但是,如果cs.child_firstname只是一個通配符和gu.firstname設置,那麼數據庫中的所有返回行,包括NULL值 - 理想情況下,我不想要NULL值。
該查詢可以重寫爲執行所有操作還是需要查詢多個查詢?
更新
下的字段都在我的窗體中的字段,所有使用$ _ POST傳遞和使用PHP處理。我希望這給出了一些數據來自何處的指示以及它與數據庫表的關係。孩子們的田地在坦布爾人的田地和監護人地裏。
- 兒童姓
- 兒童姓氏 出生
- 兒童日期
- 衛姓
- 衛姓
- 手機衛士
- 衛郵編
更新2
SQL查詢如下內容:
SELECT
DISTINCT(cs.case_id) AS case_id, CONCAT(cs.child_firstname, ' ', child_surname) AS childname, DATE_FORMAT(child_dob, '%d/%m/%Y') AS child_dob, DATE_FORMAT(created, '%d/%m/%Y') AS created, gu.firstname, gu.surname
FROM
tblcases AS cs
LEFT JOIN tblguardians AS gu
ON cs.case_id = gu.case_id
AND gu.firstname LIKE '%$_POST[parent_firstname]%'
AND gu.surname LIKE '%$_POST[parent_lastname]%'
WHERE
cs.child_firstname LIKE '%$_POST[child_firstname]%'
AND cs.child_surname LIKE '%$_POST[child_surname]%'
AND ('$_POST[child_firstname]' != '' OR gu.firstname IS NOT NULL)
你填充從代碼'LIKE'值? – 2012-07-17 19:33:47
如果你想替換空值使用IFNULL(列,defaultvalue),或者如果你想避免整個記錄,然後使用內連接,而不是左連接 – 2012-07-17 19:45:52
@Michael - 是的,像這樣:'%$ _ POST [child_firstname]% ' ruakh - 我的意思是,如果提交表單時$ _POST值爲空,則SQL查詢將僅爲通配符(即。gu.firstname LIKE'%%') – 2012-07-17 19:57:54