gpt4 book ai didi

php - 动态列名取决于查询结果的单行

转载 作者:行者123 更新时间:2023-11-29 01:58:57 27 4
gpt4 key购买 nike

我需要一些有关 sql 查询中的动态列名的帮助。首先,我将尝试解释我的数据库结构,然后是问题。

数据库结构:

admin_group 表:

+--------+----------------+
| id | language_code |
+--------+----------------+
| 1 | en_UK |
| 2 | de_DE |
| 3 | es_ES |
+--------+----------------+

constructions_meta 表:

+--------+-----------------+----------+
| id | admin_group_FK | value |
+--------+-----------------+----------+
| 1 | 1 | 0.13 |
| 2 | 2 | 0.12 |
| 3 | 3 | 0.10 |
+--------+-----------------+----------+

construction_lang 表:

+--------+-----------------+----------------+----------------+
| id | en_UK_name | de_DE_name |es_ES_name |
+--------+-----------------+----------------+----------------+
| 1 | Construction 1 | Konstruktion 1 | Construcción 1 |
| 2 | Construction 2 | Konstruktion 2 | Construcción 2 |
| 3 | Construction 3 | Konstruktion 3 | Construcción 3 |
+--------+-----------------+----------------+----------------+

那些是我在数据库中的表。我在这里需要的是获取关于每个结构的语言代码的结构名称。例如,我想列出如下结构:

  1. 结构 1
  2. 结构2
  3. 构造 3

最佳答案

select c.id , (select case c.admin_group_FK 
when 1 then l.en_UK_name
when 2 then l.de_DE_name
else l.es_ES_name
end from construction_lang l where id = c.id) as construction_name,
c.value
from constructions_meta c;

是的,解决方案只是一个让您快速工作的解决方案。Rob 关于改进数据模型是正确的

解决方案是:

您需要从您的数据模型中删除 construction_lang 表,并将其替换为这个关联表,就像 Rob 所建议的那样

+------------------+--------------+----------------+
| construction_fk | language_fk | name |
+------------------+--------------+----------------+
| 1 | 1 | Construction 1 |
| 1 | 2 | Konstruktion 1 |
| 1 | 3 | Construcción 1 |
| 2 | 1 | Construction 2 |
| 2 | 2 | Konstruktion 2 |
| 2 | 3 | Construcción 2 |
| 3 | 1 | Construction 3 |
| 3 | 2 | Konstruktion 3 |
| 3 | 3 | Construcción 3 |
+------------------+--------------+----------------+

那么你需要的查询是

select c.id, l.language_code ,  a.name ,c.value
from constructions_meta c
join construction_lang_assoc a on a.construction_fk = c.id and a.language_fk = c.admin_group_FK
join admin_group l on l.id = c.admin_group_FK;

关于php - 动态列名取决于查询结果的单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20213161/

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