需要PHP/MYSQL查询帮助

Ted*_*Ted 0 php mysql sql select

这应该是直截了当的.我有三个表(显示相关列).

用户: ID,USERNAME,PWD

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

网络:ID,ADMIN_ID(引用USER_ID)

我需要做的就是登录时,根据ID检查USERNAME和PWD,并且能够判断刚刚登录的用户是仅作为管理员的商店表,还是网络管理员,或两者兼而有之.

这可以用一个单独的SELECT与PHP完成吗?谢谢 !

cdh*_*wie 5

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
Run Code Online (Sandbox Code Playgroud)

当此查询返回时,shop_id如果从stores表中引用用户,则将为非null,并且同样适用network_id.

请注意,如果多次从商店或网络表中引用用户,则此查询将只生成一行; 我假设您不关心用户与哪个商店/网络相关联,您只想检查这种关联.

或者,此查询也可以工作:

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 = ?
Run Code Online (Sandbox Code Playgroud)

其中一个查询可能比另一个查询更快,具体取决于您在表上设置的索引以及MySQL版本.EXPLAIN如果性能问题,请考虑运行它们.