Sql 如何获取值列表以及所有相关信息?
我在SQL server数据库中有以下表:Sql 如何获取值列表以及所有相关信息?,sql,Sql,我在SQL server数据库中有以下表: [ANIMALS] [COLORS] ID | NAME ID | NAME 1 Cow 1 Blue 2 Chicken 2 Red 3 Pig 3 Green 4 T-Rex 4 Pink 5 Orange [RELATI
[ANIMALS] [COLORS]
ID | NAME ID | NAME
1 Cow 1 Blue
2 Chicken 2 Red
3 Pig 3 Green
4 T-Rex 4 Pink
5 Orange
[RELATIONSHIPS]
ANIMAL ID | COLOR ID
1 3
1 2
1 5
2 1
3 1
3 4
4 1
4 2
4 5
我正在尝试编写一个SQL查询,它将返回动物列表以及它们各自的颜色。我试图实现的目标如下所示:
ANIMAL NAME COLORS
Cow Green/ Red / Orange
Chicken Blue
Pig Blue/ Pink
T-Rex Blue/ Red/ Orange
我已经有了一个用户定义的函数,它将创建一个名为udf_discrime_Colors(@animalID)的分隔字符串(“color/color/etc”)-@animalID是该udf中唯一的参数
我只能通过传球回到一排,现在我很困惑,我该如何在不传球的情况下实现我的目标
可以在以下链接中找到分隔的SQL查询:
+给写这封信的人写信
我还在努力,所以如果我弄明白了,我会发布答案。
提前感谢您的投入 根据上面的语法,我假设SQL Server是数据库。可以通过以下方式连接字符串:
SELECT a.name,
LEFT(colors , LEN(colors)-1) colors
FROM animals a
CROSS APPLY
(
SELECT c.name + ' / '
FROM colors c
left join relationships r
on c.id = r.[COLOR ID]
where a.id = r.[ANIMAL ID]
FOR XML PATH('')
) m (colors)
看
或:
看
结果是:
| NAME | COLORS |
-----------------------------------
| Cow | Red / Green / Orange |
| Chicken | Blue |
| Pig | Blue / Pink |
| T-Rex | Blue / Red / Orange |
您使用的是什么关系数据库?很好的连接交叉应用+XML路径。出于好奇,标记为+1。在你使用的两条路线中,我什么时候应该使用哪一条?使用第一个示例(交叉应用)和第二个示例(东西)以及第二个示例(东西)的好处是什么?@sQuijeW两者之间没有真正的区别。我只是展示了如何做它的替代版本。因为在你用那个解决方案把它炸毁之后,我还在寻找它!
| NAME | COLORS |
-----------------------------------
| Cow | Red / Green / Orange |
| Chicken | Blue |
| Pig | Blue / Pink |
| T-Rex | Blue / Red / Orange |