[英]MySQL Query for Advanced Search multiple criteria
我正在研究高級搜索查詢,其中用戶根據多個條件選擇復選框。 我是一個初學者,所以我希望我能找到正確的方向。 我知道查詢是一團糟。
編輯:我意識到這需要兩個問題,所以我已經修改為嚴格的查詢問題
表數據
Table ss_users
user_id first_name last_name admin_level user_approved
1 nick jones 0 1
2 johnny rocket 0 1
Table ss_user_profile_status
user_id photo_uploaded
1 1
2 1
Table ss_user_photos
photo_id user_id filename selected
1 1 photo_1.jpg 1
2 2 photo_2.jpg 0
3 2 photo_2.jpg 1
Table ss_general
user_id city state zip neighborhood
1 baltimore maryland 00125 hamsterdam
2 lakeland maine 11542 treemont
Table ss_languages
user_id french german italian spanish
1 0 1 0 1
2 0 0 1 1
Table ss_experience
user_id waldorf kumon homeschooling
1 0 1 0
2 0 0 1
我當前的結果是所有用戶,情況並非如此:
SELECT
ss_users.*, ss_user_profile_status.*, ss_user_photos.*, ss_general.*,
ss_languages.*, ss_experience.*, ss_users.user_id AS userID,
ss_user_profile_status.user_id, ss_languages.user_id AS langID
FROM
ss_users
JOIN
ss_user_profile_status ON ss_users.user_id = ss_user_profile_status.user_id
LEFT JOIN
ss_user_photos ON ss_users.user_id = ss_user_photos.user_id
AND
ss_user_photos.selected = 1
LEFT JOIN
ss_languages ON ss_users.user_id = ss_languages.user_id
LEFT JOIN
ss_general ON ss_users.user_id = ss_general.user_id
LEFT JOIN
ss_experience ON ss_users.user_id = ss_experience.user_id
WHERE
ss_users.user_id = ss_user_profile_status.user_id
AND
ss_general.neighborhood_select LIKE '%hamsterdam%'
OR
ss_languages.spanish = 1
OR
ss_experience.kumon = 1
AND
ss_users.sitter_approved = 1
AND
ss_users.admin_level = 0
GROUP BY
ss_users.user_id DESC
對於輸出,我需要代表大部分用戶個人資料,這就是為什么我要選擇很多表數據以及額外的聯接的原因。
對於您的胖SQL選擇
SELECT
ss_users.*, ss_user_profile_status.*, ss_user_photos.*, ss_general.*,
ss_languages.*, ss_experience.*, ss_users.user_id AS userID,
ss_user_profile_status.user_id, ss_languages.user_id AS langID
FROM ss_users
JOIN ss_user_profile_status ON ss_users.user_id = ss_user_profile_status.user_id
LEFT JOIN ss_user_photos ON ss_users.user_id = ss_user_photos.user_id AND ss_user_photos.selected = 1
LEFT JOIN ss_languages ON ss_users.user_id = ss_languages.user_id
LEFT JOIN ss_general ON ss_users.user_id = ss_general.user_id
LEFT JOIN ss_experience ON ss_users.user_id = ss_experience.user_id
WHERE
( ss_general.neighborhood_select LIKE '%hamsterdam%' OR ss_languages.spanish = 1 OR ss_experience.kumon = 1 ) AND ss_users.sitter_approved = 1 AND ss_users.admin_level = 0
我只編輯一些地方,例如在OR周圍添加方括號,並刪除第一個條件(因為它似乎是多余的),並刪除組,因為它會遺漏一些數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.