gpt4 book ai didi

php - MySQL 查询用于高级搜索多个条件

转载 作者:行者123 更新时间:2023-11-29 07:51:41 25 4
gpt4 key购买 nike

我正在执行高级搜索查询,用户可以根据多个条件选择复选框。我是一个初学者,所以我希望我能知道我是否走在正确的道路上。我知道查询非常困惑。

编辑:我意识到这需要是两个问题,因此我将其修改为严格的查询问题

表格数据

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 周围添加括号并删除第一个条件,因为它看起来多余,并且还删除了分组依据,因为它会遗漏一些数据

关于php - MySQL 查询用于高级搜索多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26262055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com