我遇到一些麻煩與SQL查詢...SQL內部連接和
SELECT
s.searchword AS searchword,
s.id AS id,
COUNT(c.id) AS searchresult,
s.region AS region
FROM search_words AS s
INNER JOIN company_data AS c ON
c.text LIKE CONCAT( '%', s.searchword, '%')
AND c.region = s.region
GROUP BY 1 ORDER BY s.date DESC
結果
[{ 「搜索內容」: 「批發」, 「searchid」: 「416」, 「信息搜索結果」: 「31」, 「區域」: 「斯德哥爾摩」},{ 「搜索內容」: 「商業」, 「searchid」: 「329」, 「信息搜索結果」: 「1」, 「區域」: 「斯德哥爾摩」} ,{ 「搜索內容」: 「醫院」, 「searchid」: 「330」, 「信息搜索結果」: 「1」, 「區域」: 「斯德哥爾摩」},{ 「搜索內容」: 「交通」, 「searchid」:「337 「 」信息搜索結果「: 」4「, 」區域「: 」斯德哥爾摩「},{ 」搜索內容「: 」電子「, 」searchid「: 」334「, 」信息搜索結果「: 」4「, 」區域「:」 斯德哥爾摩「},{」 搜索內容 「:」 汽車」, 「searchid」: 「338」, 「信息搜索結果」: 「3」, 「區域」: 「斯德哥爾摩」}, { 「搜索內容」: 「食品」, 「searchid」: 「340」, 「信息搜索結果」: 「11」, 「區域」: 「斯德哥爾摩」},{ 「搜索內容」: 「零售」, 「searchid」: 「342」 , 「信息搜索結果」: 「8」, 「區域」: 「斯德哥爾摩」},{ 「搜索內容」: 「租賃」, 「searchid」: 「343」, 「信息搜索結果」: 「1」, 「區域」: 「斯德哥爾摩」 }]
這裏的問題是...區域列對所有區域都有一個空值。 我也需要收集這些......如你所見,它只收集斯德哥爾摩。
所以我想這樣...
SELECT
s.searchword AS searchword,
s.id AS id,
COUNT(c.id) AS searchresult,
s.region AS region
FROM search_words AS s
INNER JOIN company_data AS c ON
c.text LIKE CONCAT( '%', s.searchword, '%')
AND c.region = s.region OR s.region = ''
GROUP BY 1 ORDER BY s.date DESC
但它不工作:(
「*不起作用*」在任何DBMS中都不是有效的錯誤消息。究竟是什麼錯誤?你使用哪個DBMS? Postgres的?甲骨文? –
包含不符合'JOIN'標準的記錄通常使用'OUTER JOIN's而不是'INNER JOIN'來完成。你能否提供表格結構,以及[SQL小提琴](http://www.sqlfiddle.com/)中的示例數據?預期的產出?您使用哪種數據庫系統的版本? – Abecee
a_horse,抱歉,不知道DBMS是什麼,這是在PHP和我使用MySQL。 對不起,也許我應該把這個問題添加到MySql。 –