gpt4 book ai didi

需要 PHP/MYSQL 查询帮助

转载 作者:太空宇宙 更新时间:2023-11-03 10:24:54 26 4
gpt4 key购买 nike

这应该很简单。我有三个表(显示相关列)。

用户 : ID,USERNAME,PWD

商店:ID,MANAGER_ID(引用 USER_ID),NETWORK_ID

networks:ID,ADMIN_ID(引用 USER_ID)

我需要做的就是在登录时,根据 ID 检查 USERNAME 和 PWD,并能够判断刚刚登录的用户是否只是作为经理或网络管理员在 shops 表中,或者两者兼而有之.

这可以用一个单一的 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

当此查询返回时,如果用户是从 shops 表中引用的,shop_id 将为非空,network_id 也是如此。

请注意,如果多次从 shops 或 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 运行它们。

关于需要 PHP/MYSQL 查询帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7067814/

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