2014-01-05 15 views
0

我有一個包含多個表的MySQL數據庫,我必須創建一個非常複雜的查詢以從這些表中獲取所需的數據,並且我遇到了問題說明查詢。用於鏈接不同表格的兩行的MySQL語法,它們都有一個公共字段

的表被設計成這樣(列名已被重命名,這些arn't實際列),

表1 ID,名稱,等級,國家

表2 的itemid,textbool1, textbool2

查詢需要: -

  • 檢查table2.textbool1和table2.textbool2域匹配輸入的字符串(從外部提供,通過字符串連接)
  • (銘記ID =的itemid)
  • 檢查名稱包含所輸入的字符串
  • 檢查等級高於某一值
  • 檢查國家相匹配輸入的字符串
  • 回報最大的20個表2行,由table1.rating排序的內容(降序)

到目前爲止,我有這樣的: -

SELECT table2.* from table2 INNER JOIN table1 
WHERE table2.textbool1 = 'true' && table2.textbool2 = 'false' 
&& table1.name LIKE 'test' && table1.rating >= '10' && table1.country = 'gb' 
ORDER BY table1.rating DESC LIMIT 20 

但這不起作用。有人可以解釋爲什麼嗎?

任何幫助將appriciated。

編輯

此查詢的工作:SELECT table2.* FROM table2 INNER JOIN table 2 ON(table2.item_id = table1.id) WHERE table1.country= 'de' && premiumservers.Rating >= 9 ORDER BY table1.Rating DESC LIMIT 20

但這並不:SELECT table2.* FROM table2 INNER JOIN tabel1 ON(table2.item_id = table1.id) WHERE table1.Name LIKE 'test' && table1.country = 'de' ORDER BY table1.Rating DESC LIMIT 20

+1

** table1.rating> ='10'**是字符串還是int? – user1844933

+0

使用正確的JOIN語法'table2 INNER JOIN table1 ON table2.itemid = table1.id ...' – Mihai

+0

table1.rating是一個mediumint – Ryan

回答

1

你缺少在INNER JOIN

ON聲明試試這個..

SELECT table2.* from 
table2 INNER JOIN table1 
ON(table2.itemid = table1.id) 
WHERE table2.textbool1 = 'true' && table2.textbool2 = 'false' 
&& table1.name LIKE '%test%' && table1.rating >= '10' && table1.country = 'gb' 
ORDER BY table1.rating DESC LIMIT 20 
+0

好的,這是現在的查詢。 'SELECT table2。* FROM table2 INNER JOIN tabel1 ON(table2.item_id = table1.id)WHERE table1.Name LIKE'test'&& table1.country ='de'ORDER BY table1.Rating DESC LIMIT 20'但它仍然不起作用。 – Ryan

+0

好的,這個查詢有效。 'SELECT table2。* FROM table2 INNER JOIN table 2 ON(table2.item_id = table1.id)WHERE table1.country ='de'ORDER BY table1.Rating DESC LIMIT 20' – Ryan

+0

但是當它包含「LIKE」部分時,它不起作用。 – Ryan

相關問題