2015-09-28 23 views
0

我有2個表,table1和table2通過id(table1)和b_id(table2)鏈接。PHP/MySQL的 - 基於表2的計數從表1得到結果

table1包含關鍵字數據,我希望獲取相關結果(只是%%)(id,keyword_data)的簡單%。

表2簡單記錄查看結果得到了,(ID,B_ID,B_DATE)

我想選擇在默認情況下最少的意見記錄並限制這種每次7個結果。

我已經得到了下面,但我知道它看起來不正確!

SELECT * FROM table1 WHERE keyword_data LIKE '%xxxx%' INNER JOIN table2 ON table1.id = table2.b_id WHERE ORDER BY COUNT(table2.id) ASC LIMIT 7; 

由於

+0

可以共享表記錄和期望的輸出與該記錄 –

回答

1

錯誤是

  • ORDER BY COUNT(table2.id)將等處理 'ORDER BY 8' 爲COUNT(table2.id)導致的數值
  • 你有兩個'WHERE'子句。
  • 條件在查詢中位置錯誤。

修正後的版本(根據我對邏輯的理解)。

SELECT distinct(A.id),A.keyword_data,(select count(table2.b_id) from table2 where table2.b_id=A.id) as count FROM table1 A INNER JOIN table2 B ON A.id = B.b_id WHERE A.keyword_data LIKE '%test%' order by count asc LIMIT 7 
+0

這適用於加載時間變得非常長的例外,我想知道極限是否需要移動? –

+0

感謝您的回覆 - 忘記添加上面的謝謝^ –

+0

歡迎您。你在使用真正的大桌子嗎?如果是,請嘗試使用索引或其他方法來加快搜索速度。我的table1只有0.00087秒,10行,table2有15行(這兩個表沒有除查詢中提到的其他列)。 –

相關問題