gpt4 book ai didi

mysql - 使用 meta_table 连接 4 个表

转载 作者:行者123 更新时间:2023-11-29 02:33:15 24 4
gpt4 key购买 nike

我有这样的数据库结构:

sites
id | name
1 | Site 1
2 | Site 2

locations
id | city
23 | Baltimore
24 | Annapolis

people
id | name
45 | John
46 | Sue

sites_meta
id | site_id | meta_name | meta_value
1 | 1 | local | 23
2 | 1 | person | 45
3 | 2 | local | 24
4 | 2 | person | 46

因此,如您所见,站点 1 (id 1) 在巴尔的摩并与 John 关联,站点 2 (id 2) 在安纳波利斯并与 Sue 关联。

我需要找出一个可以返回的聪明的sql语句

id |   name   | id |    city    | id | name
1 | Site 1 | 23 | Baltimore | 45 | John
2 | Site 2 | 24 | Annapolis | 46 | Sue

如果有人能帮助我,我将不胜感激。我已经尝试了几种 select 语句的组合,但我一直坚持使用 sites_meta 表中的两个值。

最佳答案

select
s.id as siteId,
s.name as siteName,
max(l.id) as locationId,
max(l.city) as city,
max(p.id) as personId,
max(p.name) as personName
from
sites_meta sm
join sites s on s.id = sm.site_id
left join locations l on l.id = sm.meta_value and sm.meta_name = 'local'
left join people p on p.id = sm.meta_value and sm.meta_name = 'person'
group by
s.id,
s.name

你大概可以想象this kind of "meta" table might become a pain ...尤其是在添加更多项目时。

相反,您可以考虑用两个新表替换它,sites_locationssites_people

关于mysql - 使用 meta_table 连接 4 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437048/

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