[英]PHP/MYSQL query help needed
这应该很简单。 我有三个表(显示相关列)。
用户: ID、用户名、密码
商店: ID、MANAGER_ID (引用 USER_ID) 、NETWORK_ID
网络: ID、ADMIN_ID (引用 USER_ID)
我需要做的就是在登录时检查 USERNAME 和 PWD 与 ID 并能够判断刚刚登录的用户是否只是作为经理或网络管理员在商店表中,或两者兼而有之。
这可以用一个 SELECT 和 PHP 来完成吗? 谢谢 !
SELECT
users.id AS user_id,
shops.id AS shop_id,
networks.id AS network_id
FROM users
LEFT OUTER JOIN shops
ON shops.manager_id = users.id
LEFT OUTER JOIN networks
ON networks.manager_id = users.id
WHERE users.username = ?
AND users.pwd = ?
LIMIT 1
当这个查询返回时,如果用户是从 stores 表中引用的,则shop_id
将是非空的,对于network_id
也是如此。
请注意,如果多次从 shop 或 networks 表中引用用户,则此查询将只产生一行; 我从您的问题中假设您不关心用户与哪个商店/网络相关联,您只想检查这种关联。
或者,这个查询也可以工作:
SELECT
users.id AS user_id,
EXISTS (SELECT shops.id
FROM shops
WHERE shops.manager_id = users.id)
AS has_shop,
EXISTS (SELECT networks.id
FROM networks
WHERE networks.admin_id = users.id)
AS has_network
FROM users
WHERE users.username = ?
AND users.pwd = ?
根据您在表上设置的索引以及 MySQL 版本,其中一个查询可能比另一个查询更快。 如果性能有问题,请考虑通过EXPLAIN
运行它们。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.