gpt4 book ai didi

sql - 获取与列值的表连接

转载 作者:行者123 更新时间:2023-12-01 17:19:13 25 4
gpt4 key购买 nike

如何使用列值连接表?

我有如下列出的三个表:

  • messages_table

    -----------------------------------------------------------------------------
    msg_id | msg_sub | msg_to | to_user_type | msg_from | from_user_type
    -----------------------------------------------------------------------------
    001 | test | 88 | manager | 42 | admin
    002 | test2 | 88 | manager | 94 | manager
  • admin_table

    -------------------------—
    admin_id | admin_name
    -------------------------—
    001 | Super Admin
  • ma​​nager_table

    ---------------------------
    manager_id | manager_name
    ---------------------------
    88 | Mandela
    94 | Kristen

如何使用 SQL 查询获得所需的输出,如下所示。 IE。当满足以下条件时,根据列值连接表:

  1. 如果user_type = admin,那么它应该与admin_table连接。

  2. 如果user_type = manager,那么它应该与manager_table连接。

所需输出:

-----------------------------------------------------
msg_id | msg_sub | msg_to_name | msg_from_name
-----------------------------------------------------
001 | test | Mandela | Super Admin
002 | test2 | Mandela | Kristen

即根据列值获取连接sql查询。

<小时/>

编辑:

我想从 sql 查询中获取数据,而不是从服务器端编码中获取数据。

我尝试了来自 here 的查询,即 Winfred 的想法(已回答)

但是我无法理解。

msg_by_usertype 是基于列的,其中值 manager 则应选择 manager_table,如果是 admin,则应选择 admin_table

最佳答案

据我了解您的问题,您可以尝试以下操作:

    SELECT msg_id,  
msg_body,
usersBy.userName AS msg_by,
usersTo.userName AS msg_to,
msg_by_usertype
FROM messages
INNER JOIN
(SELECT admin_id As id, admin_name as userName
FROM admin_table
UNION
SELECT manager_id As id, manager_name as userName
FROM manager_table ) usersTo ON msg_to = usersTo.id

INNER JOIN
(SELECT admin_id As id, admin_name as userName
FROM admin_table
UNION
SELECT manager_id As id, manager_name as userName
FROM manager_table ) usersBy ON msg_by = usersBy.id

这是一个SQL Fiddle看看它是如何工作的。 (只有当您不能拥有像经理一样具有相同 id 的管理员时,它才有效。ID 在两个表中应该是唯一的。)

关于sql - 获取与列值的表连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12403125/

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