0
我無法在MySQL運行多參數的搜索查詢:MYSQL多參數搜索
SELECT item.* from item, attr, attr_xref
WHERE attr_xref.item = item.id
AND attr.id = attr_xref.attrID
AND (
(attr.name = 'city' AND attr.val LIKE '%new york%')
OR
(attr.name = 'floor' AND attr.val = 6)
)
查詢與PHP動態生成的,沒有煩惱那裏。
問題是雖然這個查詢不會返回一個嚴格的搜索。它將返回具有等於其搜索值的城市或樓層的物品。
,我可以看到它的問題是在這裏AND attr.id = attr_xref.attrID
這行有超過1個屬性項,去掉OR
操作我會嘗試匹配與幾個不同的名字和值的單一屬性返回多個值,但只有一個ID。
有什麼辦法可以解決這個問題嗎?
這是一個原始示例,在運行時我可能有超過2,3個搜索參數。
謝謝你,望着你的幫助!
編輯: 得到它通過張貼在接受的答案SQL查詢工作,而只是增加了這一點:
AND (a_city.id IS NOT NULL
OR a_floor.id IS NOT NULL)
GROUP BY imobil.id
HAVING COUNT(*) = 2
你要組你的結果再算上他們,「= 2 '表示有多少個參數已被傳遞,這將以PHP計算。感謝或你的幫助。 如果有問題你可能會想讀這個question
不幸的是,它仍然顯示至少具有其中一個屬性的項目,而不是兩個項目。 – michaeltintiuc 2012-04-08 17:24:29
雖然,如果我將a_city.id和a_floor添加到SELECT,我可以看到這些值爲NULL,但由於某些原因,WHERE不對其進行過濾。 – michaeltintiuc 2012-04-08 17:30:23
謝謝,得到它的工作,只需在最後加上: AND(a_city.id不爲空 或a_floor.id不爲空) group by item.id having count(*)> 1 – michaeltintiuc 2012-04-08 18:07:38