繁体   English   中英

基于表的字段从不同的表进行MySQL查询

[英]MySQL query from different tables based on a field of a table

我认为标题有点模糊。 我会在下面解释。 所以我有这些桌子

约会表

id  created_by  created_by_id
---------------------------
1   provider        10
2   customer        5
3   admin           1

提供者表

id first_name last_name
------------------------
..    ...       ...
10     x         y

客户表

id  first_name  last_name
-------------------------
..     ...       ...
5       a         b

管理员表

id  first_name  last_name
--------------------------
..    ...          ...
1      c            d

我想基于created_by字段查询并返回相关帐户的全名,因此,如果它是提供者,它将在提供者表中查询名称,依此类推。

我已经试过了

select  *,
        (
            SELECT 
                CASE 
                    WHEN appointments.created_by='provider' THEN 
                        CONCAT(d.first_name, " ", d.last_name)
                    WHEN appointments.created_by='customer' THEN 
                        CONCAT(p.first_name, " ", p.last_name)
                    ELSE CONCAT(p.first_name, " ", p.last_name)
                END
            FROM providers as d, customers as p
            WHERE 
                appointments.created_by_id = (CASE 
                    WHEN appointments.created_by='provider' THEN 
                        d.id
                    WHEN appointments.created_by='customer' THEN 
                        p.id
                    ELSE p.id
                END)
        )
from appointments

但这似乎不起作用。 你能帮我做成一张这样的桌子吗

id  created_by  name
-------------------
1    provider   x y
2    customer   a b
3     admin     c d
select *,
    case appointments.created_by 
        when 'admin' then (select concat(first_name, ' ', last_name)  from admins where admins.id = appointments.created_by_id)
        when 'customer' then (select concat(first_name, ' ', last_name)  from customers where customers.id=appointments.created_by_id)
        when 'provider' then (select concat(first_name, ' ', last_name)  from providers where providers.id = appointments.created_by_id)
    END as name
from appointments

这是一个带有case方法的sqlfiddle: http ://sqlfiddle.com/#!9/43510/1

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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