【发布时间】:2012-08-27 18:40:19
【问题描述】:
在对“链接”表的查询返回的结果中,我还想添加一个额外的列,该列显示从JOIN 中选择的“显示名称”值,条件是每行的“toTable”值.此外,有时“DisplayName”值是列串联的结果。
我的问题是我该怎么做?
我可以编写单独的查询并与UNION ALL 组合,但我想知道是否有条件方法来做到这一点
“链接”表中的每个条目都描述了两个表(可能是 3 个或更多表)中的一对条目之间的链接。
链接表:
| LinkID | fromTable | fromID | toTable | toID |
| 1 | A | 1 | B | 1 |
| 2 | A | 1 | C | 2 |
| 3 | B | 1 | C | 1 |
| 4 | C | 1 | A | 1 |
我想要的查询结果: WHERE Links.fromTable = 'A' OR Links.fromTable = 'C' 例如
| LinkID | fromTable | fromID | toTable | toID | DisplayName |
| 1 | A | 1 | B | 1 | Some Title |
| 2 | A | 1 | C | 2 | Loud-Quack |
| 4 | C | 1 | A | 1 | Linus |
3 个不同列的表格:
Table A:
| ID | Name |
| 1 | Linus |
-
Table B:
| ID | Title |
| 1 | some title |
-
Table C:
| ID | CategoryA | CategoryB |
| 1 | Bark | Softly |
| 2 | Quack | Loud |
-
这就是我这样做的方式UNION ALL,这不是很灵活:
编辑:实际上我认为下面是错误的,我现在正在看这个:
SELECT Links.*, A.Name AS DisplayName
FROM Links
JOIN A ON Links.toID = A.ID
WHERE Links.fromType IN ('A') AND Links.toType IN ('B')
UNION ALL
SELECT Links.*, CONCAT(C.CategoryB,'-',C.CategoryA) AS DisplayName
FROM Links
JOIN C ON Links.toID = C.ID
WHERE Links.fromType IN ('A') AND Links.toType IN ('C')
【问题讨论】:
标签: mysql sql join conditional