已經看到多個帖子,但我看不到任何回答我的問題。同一列上的多個條件
基本上我有我的數據庫中3個表,其涉及到的成員和他們的分類/分類。
- 構件(定義成員的列表和相關聯的數據)
- member_taxonomy(定義類別,子類別並使用partent ID和枚舉字段TAX_TYPE(類別,子類別,FACILITY)
- member_taxonomy_map的組合設施(定義映射成員和member_taxonomy)
之間我有一個會員頁面內這是有多種選擇通過指定一個或多個類別,然後一個或多個設備,以優化搜索。我一直在試圖對TA搜索竹葉提取使用查詢:
SELECT members.*
FROM (members)
JOIN member_taxonomy_map ON member_taxonomy_map.member_id = members.id
WHERE member_taxonomy_map.taxonomy_id = 1
AND member_taxonomy_map.taxonomy_id = 26
AND members.active = 1
AND members.deleted = 0;
但是它返回0行這事做有多個,其中在同一列的條款,但我無法弄清楚這個查詢應該是什麼樣子。每次細化搜索(並且最多可以有30個不同的選項來優化搜索),我需要添加一個額外的AND子句,以便只返回具有這些映射的成員。
IN子句將無法正常工作,因爲這是有效返回匹配任何這些特定值的任何行,但是這是不正確,因爲它需要精確匹配指定的值。
希望有人可以給我在正確的方向有幾點建議。
在此先感謝。
UPDATE
這是可能的taxonomy_id可以是1到26餘概率需要包括用於members_taxonomy_map表的模式。
id int
tax_name varchar
slug varchar
tax_type enum ('CATEGORY','CLASSIFICATION','FACILITY','RATING')
parent_id int
active int
因此沒有父ID設置任何TAX_TYPE是頂級類別。子類別具有parent_id CATEGORY。 CLASSIFICATION可以有CATEGORY的parent_id,FACILITY有一個CATEGORY的parent_id。
因此例如一類可能是住宿,子類可能是酒店設施可能是無線網絡連接。因此,如果一個成員擁有全部三個這些項目,他們將在映射表中有3個條目。我需要能夠對這些進行過濾,以便它根據住宿類型建立查詢以進行過濾(即子類別 - 具有tax_type CATEGORY但具有父級ID的條目,然後在此分類中查詢。返回多個條目相同的成員,但我可以通過額外的SQL子句過濾這些出來處理這個
絕對不可能有兩個不同的值。 :) – 2012-02-29 17:41:09
查看更新的問題。 @MarcusAdams – 2012-03-01 10:57:29
@NickRolando請檢查此:https://stackoverflow.com/questions/47167512/not-correct-result-two-conditions-for-one-field-in-mysql-where – user3770797 2017-11-07 21:13:50