繁体   English   中英

需要 PHP/MYSQL 查询帮助

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM