好的,我在完成此任务时遇到了一些麻烦,而且坦率地说,我什至不知道是否有可能做我想做的事情。
我具有以下表结构:
表结构
Tags (t)
============
ID
LINE_ID
TAG
ACTIVE
Dashboard Lines (dl)
===============
ID
LINE_ID
GAUGE_TAG_ID
DISPLAY_NAME
ACTIVE
Dashboard Points (dp)
================
ID
DASHBOARD_ID
TAG_ID
DISPLAY_NAME
我想做的就是根据
t.TAG
表中的所有ID将所有'Dashboard Points'
拉到单个结果中。一个例外是GAUGE_TAG_ID in the Dashboard_Lines table
。我还需要拉该标签。我已经能够成功地将所有t.TAG
拉入连接到dp.TAG_ID = t.ID
的单个结果中。不幸的是,我还没有弄清楚如何在dl.gauge_tag_id
上加入联接以获取与ID相关的相关t.tag
。我当前的查询(未拉出gauge_tag_id)
SELECT GROUP_CONCAT(DISTINCT t.TAG), dl.gauge_tag_id, dl.line_id
FROM tags t
JOIN dashboard_lines dl ON dl.line_id = t.line_id
JOIN dashboard_points dp ON dp.tag_id = t.id AND dp.dashboard_id = dl.id
WHERE t.line_id = '1'
AND t.active = 'Y'
这样可以成功地将所有
t.TAG
与相关ID on t.ID and dl.TAG_ID
分组是否可以包含
t.TAG for the dl.GAUGE_TAG_ID
?编辑:
http://sqlfiddle.com/#!9/ace98d
编辑2:
所需结果:
GROUP_CONCAT(t.TAG)
Line1_Over_Cnt, Line1_Case_Count, Line1_MaxCap..
(所有相关的tag_id和gauge_tag_id-显示为t.TAG)
不必全部放在一列(GROUP_CONCAT)中。只要包含所有
t.TAG
(t.ID上的dp.TAG_ID)和(t.ID上的dl.GAUGE_TAG_ID),它就可以是具有所有的传统结果集。TAG
Line1_Over_Cnt
Line1_Case_Count
Line1_MaxCap
Line1_Idle
Kleins_Line1_Reset
L1_STD_Rate
Line1_Rate_Temp
Line1_Rate
Edit3:可能的解决方案
SELECT t1.tag
FROM tags t1
JOIN dashboard_lines dl ON dl.line_id = t1.line_id
JOIN dashboard_points dp ON dp.tag_id = t1.id AND dp.dashboard_id = dl.id
WHERE t1.line_id = '1'
AND t1.active = 'Y'
UNION
SELECT t2.tag
FROM tags t2
JOIN dashboard_lines dl ON gauge_tag_id = t2.id AND dl.line_id = '1'
WHERE t2.line_id = '1'
AND t2.active = 'Y'
这为我提供了单独行中列出的所有标签。这是最好的方法吗?有没有办法将它们全部合并成一个单一的连接结果?
-结束编辑-
任何帮助表示赞赏,谢谢。
最佳答案
在Edit3之后,您就快到了。将所有内容封装在可以为您完成组连接的另一个选择中。
SELECT GROUP_CONCAT(tags) FROM
(
SELECT t1.tag as tags
FROM tags t1
JOIN dashboard_lines dl ON dl.line_id = t1.line_id
JOIN dashboard_points dp ON dp.tag_id = t1.id AND dp.dashboard_id = dl.id
WHERE t1.line_id = '1'
AND t1.active = 'Y'
UNION
SELECT t2.tag as tags
FROM tags t2
JOIN dashboard_lines dl ON gauge_tag_id = t2.id AND dl.line_id = '1'
WHERE t2.line_id = '1'
AND t2.active = 'Y'
) A;
关于mysql - MySQL从多个表查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34205410/