2011-01-25 176 views
0
$sQuery = ' 
SELECT DISTINCT SQL_CALC_FOUND_ROWS IF(`Profiles`.`Couple`=0, 
`Profiles`.`ID`, IF(`Profiles`.`Couple`>`Profiles`.`ID`, `Profiles`.`ID`, 
`Profiles`.`Couple`)) AS `ID` FROM `Profiles`'; 


$sCountries = implode("','", $mValue); 
    $sJoin .= " LEFT JOIN `hm_locations` ON (`hm_locations`.`country` IN '".$sCountries."' 
    AND `hm_locations`.`profileID` = `Profiles`.`ID`) "; 

這個查詢是收集不同的功能,然後與另一個功能放在一起,但我基本上想知道我可以重新寫入左連接節以正常工作。MySQL左連接問題

我想在我自己的左側加入這裏,以便搜索將從hm_locations中的國家匹配搜索的位置處獲取ID。

我只需要LEFT JOIN部分的幫助,因爲這是唯一不能工作的部分。

非常感謝

+1

您遇到的實際錯誤消息將對找出正在發生的事情非常有用,例如普通SQL的示例,例如在phpMyAdmin中作爲測試運行。 – 2011-01-25 13:15:35

+1

如果你需要SQL幫助,發佈SQL代碼,而不是PHP,很傻 – 2011-01-25 13:17:40

回答

2

你需要把你的國家括號:

"... `hm_locations`.`country` IN ('".$sCountries."') ..." 
+0

確實如此--IN()是一個函數。另外,$ mValue中的值是否已經轉義?他們真的應該是。 – TehShrike 2011-01-25 15:30:14

0

SQL LEFT JOIN Syntax

SELECT column_name(s) 
FROM table_name1 
LEFT JOIN table_name2 
ON table_name1.column_name=table_name2.column_name 

我沒有看到任何允許其他不是根據 「=」 條款表中的值,在您的情況下是Profiles和hm_locations。帶有「AND」的「IN」子句不是LEFT JOIN語法的一部分。