我已經使用聯結表將「equip」表中的項目鏈接到equipcat表。問題是,我想獲得用戶提供的搜索項的所有項目列表,其中包含equipcat(又名類別描述)字段。但我希望每個項目只列出一次。多個類別中的項目顯示多次
看來我必須對SQL有一些基本的誤解,因爲我以前遇到過這個問題,並且很難搞清楚它。我不僅希望解決這個特殊問題,而且爲了將來的需要也更好地理解它。
這是我的SQL。由於我意識到它們不能縮放/表現良好,請忽略模糊搜索。我也意識到,我使用單個字段來保存關鍵字違反了良好的設計,我只是要求你忽略,除非你認爲這對我所問的問題很重要。
SELECT equip.equipid, equip.equipdesc, equip.equipgeneraldesc,
equip.keywords, equip.dayprice, equip.weekprice,
equip.monthprice, equip.hideyn, equipcat.equipcat,
equipcat.equipcatkeywords
FROM (equip INNER JOIN equip_equipcat ON equip.equipid = equip_equipcat.equipid)
INNER JOIN equipcat ON equip_equipcat.equipcatid = equipcat.equipcatid
WHERE (equip.equipdesc LIKE '%rake%' OR equip.keywords LIKE '%rake%' OR
equipcat.equipcat LIKE '%rake%' OR equipcat.equipcatkeywords LIKE '%rake%')
AND (equip.hideyn = 0)
ORDER BY equipdesc ASC;
爲了使您的建議工作,我必須將equip。*更改爲*和ee.equipcatid更改爲ec.equipcatid。另外,我相信,第一個AND應該是OR。我試圖返回可能只包含「rake」的記錄。 – HK1 2011-04-01 14:57:56
實際上,經過進一步的測試,我認爲我需要保留原始的AND條件,因爲當我將其更改爲OR時,確實會得到錯誤的結果。 – HK1 2011-04-01 15:03:02