【发布时间】:2019-12-25 17:19:03
【问题描述】:
我们的客户要求为每个客户安排来自数据库的字段以外的列。当客户登录时,他们将能够根据他们的要求查看列和值。因此,我们希望将列名与另一个表中的行值(存储为列名)进行比较,并在单个数组中获取这些值。
假设我有 2 张桌子。
表 A 是所有数据输入的地方
Table A
id | job_no | applied_date | customer_id |
------|-----------|-----------------|------------ |
1 | BOM/001 | 2019-06-18 | 1 |
2 | BOM/002 | 2019-08-16 | 1 |
表 B 是存储自定义字段排列的地方
Table B
column_id | field_name | sort_order | customer_id |
-------------|---------------|---------------|----------------|
1 | job_no | 1 | 1 |
2 | applied_date | 2 | 1 |
客户将看到的最终结果是
Final Result
job_no | applied_date |
----------|-----------------|
BOM/001 | 2019-06-18 |
BOM/002 | 2019-08-16 |
我们尝试过的查询如下,但由于限制为 1,因此返回 1 个值
mysql
SELECT column_id
, customer_id
, field_name
, sort_order
, (SELECT CASE c.field_name WHEN 'job_no'
THEN d.job_no
WHEN 'applied_date'
THEN d.applied_date
ELSE 0 END
FROM table_a d
WHERE d.customer_id = c.customer_id LIMIT 1) AS value
FROM table_b c
WHERE c.customer_id = 1
ORDER
BY sort_order ASC");
预期的输出应为如上所示的最终结果。希望,我能够解释你。提前谢谢你。
【问题讨论】:
-
我投票决定将此问题作为离题结束,因为这不是问题,而是 Jira 中的任务。一个人喜欢因为这样做而获得报酬。