Sql 如何设置查询以从多个表和桥接表中进行选择

Sql 如何设置查询以从多个表和桥接表中进行选择,sql,sqlite,Sql,Sqlite,我想从一个空格中选择一个字符,然后查看它们的库存以及项目的条件和属性 字符 身份证件 名称 确认你是个坏蛋 1. 厕所 0 2. 朋克 0 3. 凯尔 1. 4. 武科维奇 0 5. 特拉克斯勒 0 6. 西尔伯曼 0 7. 朋克 0 8. 莎拉 1. 9 朋克 0 10 终结者 1. 我相信以下几点可以满足你的需求(除了天气变冷,变硬,而不是变硬,变快):- 这导致:- 我冒昧地使用了特定的列名 我认为您的主要问题是试图对值使用联接,我想是为了限制结果 如果将SQL更改为:- SELEC

我想从一个空格中选择一个字符,然后查看它们的库存以及项目的条件和属性

字符

身份证件 名称 确认你是个坏蛋 1. 厕所 0 2. 朋克 0 3. 凯尔 1. 4. 武科维奇 0 5. 特拉克斯勒 0 6. 西尔伯曼 0 7. 朋克 0 8. 莎拉 1. 9 朋克 0 10 终结者 1.
我相信以下几点可以满足你的需求(除了天气变冷,变硬,而不是变硬,变快):-

这导致:-

  • 我冒昧地使用了特定的列名
我认为您的主要问题是试图对值使用联接,我想是为了限制结果

如果将SQL更改为:-

SELECT s.id, c.id, c.name, i.name,  group_concat(a.category,',')
FROM characters AS c, items AS i, itemAttributes AS a, spaces AS s
INNER JOIN spaceAssociations AS sa ON sa.space_id = 1 AND sa.character_id = c.id
INNER JOIN itemCharacterAssociations AS ica ON ica.character_id = 3 AND ica.item_id = i.id
INNER JOIN itemAssociations AS ia ON ia.items_id = 2 AND ia.itemAttributes_id = a.id
WHERE c.id = 3
GROUP BY c.id 
;
结果接近,但类别重复频率太高,如下所示:-

我不知道怎么做你提到的那把小提琴。下面是用于构建和填充表的上述代码(可能是因为我的拼写错误而导致的冷/硬而不是快/硬)


在代码中,您没有正确地加入表。
您正在对
使用连接语法,而不是显式的
join
子句,后跟带有各自条件的
ON
子句。
此外,对于您发布的示例数据和需求,您不需要
GROUP BY
子句:

SELECT s.id space_id, 
       c.id character_id, 
       c.name character_name, 
       i.name item_name, 
       GROUP_CONCAT(a.category) category 
FROM characters c 
INNER JOIN spaceAssociations sa ON sa.character_id = c.id  
INNER JOIN spaces s ON sa.space_id = s.id 
INNER JOIN itemCharacterAssociations ica ON ica.character_id = c.id
INNER JOIN items i ON i.id = ica.item_id
INNER JOIN itemAssociations ia ON ia.items_id = i.id
INNER JOIN itemAttributes a ON ia.itemAttributes_id = a.id
WHERE c.id = 3 AND s.id = 1 AND i.id = 1
请参阅。
结果:

空间标识 字符标识 字符名 项目名称 类别 1. 3. 凯尔 管 冷,硬
你应该编辑你的问题并显示你想要的结果。也许小例子(或SQL/DB FIDLE)也会有所帮助。添加了预期和实际的。我不知道怎么做你提到的小提琴。我意识到我写得不好,也许我的编辑更好更清晰。我意识到我写得不好,也许我的编辑更好更清晰
SELECT s.id space_id, 
       c.id character_id, 
       c.name character_name, 
       i.name item_name, 
       GROUP_CONCAT(a.category) category 
FROM characters c 
INNER JOIN spaceAssociations sa ON sa.character_id = c.id  
INNER JOIN spaces s ON sa.space_id = s.id 
INNER JOIN itemCharacterAssociations ica ON ica.character_id = c.id
INNER JOIN items i ON i.id = ica.item_id
INNER JOIN itemAssociations ia ON ia.items_id = i.id
INNER JOIN itemAttributes a ON ia.itemAttributes_id = a.id
WHERE c.id = 3 AND s.id = 1 AND i.id = 1