如何查询关联存在缺失数据的门店的员工信息?
如何查询关联缺失数据门店的员工
我明白你的需求:要找出那些绑定了存在字段缺失(门店名称、街道、门牌号为空)的门店的员工,而且不能直接删除这些门店因为关联了员工。先帮你梳理下正确的查询逻辑,再修正你原来的代码问题。
你的原始查询有两个主要问题:一是WHERE子句里用SELECT *的子查询没法返回布尔判断结果,二是没有正确把员工和缺失门店通过关联表绑定起来。
正确的MySQL查询语句
SELECT u.* FROM gebruiker u -- 关联员工和门店的中间表 JOIN winkel_gebruikers sg ON u.user_id = sg.user_id -- 关联到门店信息表 JOIN winkel_adresgegevens s ON sg.winkel_id = s.store_id WHERE -- 筛选出有指定字段缺失的门店 (s.winkel_naam = '' OR s.winkel_straat = '' OR s.winkel_huisnummer = '');
逻辑拆解
- 表关联:通过两次
JOIN把员工表(gebruiker)、门店关联表(winkel_gebruikers)、门店信息表(winkel_adresgegevens)串联起来,确保我们只处理有绑定关系的记录。 - 条件过滤:精准定位那些
门店名称、街道、门牌号为空的门店,这样就能筛选出关联这些门店的员工。 - 去重优化(可选):如果同一个员工关联了多个缺失数据的门店,查询结果会出现重复,你可以加上
DISTINCT来去重:
SELECT DISTINCT u.* FROM gebruiker u JOIN winkel_gebruikers sg ON u.user_id = sg.user_id JOIN winkel_adresgegevens s ON sg.winkel_id = s.store_id WHERE (s.winkel_naam = '' OR s.winkel_straat = '' OR s.winkel_huisnummer = '');
匹配你的数据库示例
比如你给出的门店数据里,store_id=3(缺失门店名称和门牌号)、store_id=4(缺失街道),这个查询会返回所有绑定这两个门店的员工信息,完全符合你的需求。
内容的提问来源于stack exchange,提问作者A. Rakké
相关产品推荐
相关产品推荐

