【发布时间】:2012-10-13 08:04:45
【问题描述】:
我有两张桌子:
table_a: table_b
+----+------+ +----+---------+------+
| id | name | | id | relation| name |
+----+------+ ++++++---------+------+
| 1 | bob | | 1 | friend | chris|
| 2 | jim | | 1 | friend | jon |
| 3 | tom | | 1 | brother | matt |
+----+------+ | 2 | friend | sam |
| 2 | parent | ron |
+----+---------+------+
我想输入一个查询来输出类似的东西
+----+------+------------+---------+--------+
| id | name |friend | brother | parent |
+----+------+------------+---------+--------+
| 1 | bob | chris, john| matt | |
| 2 | jim | sam | | ron |
+----+------+------------+---------+--------+
所以id是两个表之间的comman变量, 关系变量具有预设值(朋友、兄弟、父母,可能还有其他几种类型),每个 id 的每个关系可以有多个 table_b.name。
这是一项太复杂的任务吗?
【问题讨论】:
-
请注意:'id' 是 table_b 不应该这样命名,而是应该使用类似 table_a_id 的东西来提高可读性
-
您可以在选择查询中使用 case 语句来实现这一点。
-
@Naveen:您不需要重命名该列,因为表名/别名会清楚地表明:table_b.id 等。
-
@davek 这里的 table_b.id 不是指 table_b 的主键。请检查。但它是table_a的外键
-
@Naveen:你说的很对——我看错了!
标签: mysql sql join concatenation