在SQLite中合并两个表时出现不需要的重复表结果

在SQLite中合并两个表时出现不需要的重复表结果,sqlite,join,duplicates,Sqlite,Join,Duplicates,问题:我正在尝试在SQLite中创建一个查询,该查询将显示表1中特定“id”的所有列(stats),并将其与表2中的两个独立结果连接起来 使用联接或左联接时,我得到以下结果: (表1统计数据)+(表2技能1)+(表1统计数据)+(表2技能2) 表1重复了两次,因为表2中有两种技能。如果有5项技能,我会像上面那样将表1复制5次 我想要的是: (表1统计数据)+(表2技能1职责)+(表2技能2职责) 表1表示键为“id”的字符的类别。每个角色都有不同数量的技能特征。每个技能特征定义为(表2.skil

问题:我正在尝试在SQLite中创建一个查询,该查询将显示表1中特定“id”的所有列(stats),并将其与表2中的两个独立结果连接起来

使用联接或左联接时,我得到以下结果: (表1统计数据)+(表2技能1)+(表1统计数据)+(表2技能2)

表1重复了两次,因为表2中有两种技能。如果有5项技能,我会像上面那样将表1复制5次

我想要的是: (表1统计数据)+(表2技能1职责)+(表2技能2职责)

表1表示键为“id”的字符的类别。每个角色都有不同数量的技能特征。每个技能特征定义为(表2.skillID)。一个角色最多可以拥有15个技能特征。我正在尝试组合一个查询,它将显示角色的基本统计信息(表1.*)以及技能特征的所有奖金(表2.奖金)

范例

-- Table 1 --
id = 8
strength = 12
agility = 11
。。。更多统计数据

-- Table 2 --
id = 8
skillID = 3
bonus = 20% chance to dodge

id = 8
skillID = 4
bonus = 5% chance to crit
我得到的最接近的结果,以及我得到上述结果的原因:

SELECT * FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table1.id = 8;

如果能在我该去的方向上得到任何帮助,我将不胜感激。我不确定子查询是否是更好的途径。谢谢

如果表2中有两行以上具有相同ID,该怎么办?将一些规则和预期的输出数据放入问题中。表2中的“id”设计有重复项。“id”表示一类字符。它是表1中的主键和表2中的外键。我要查找的是所有表1(其中id=8)以及表2(其中id=8)中的两项技能,感谢您的快速反馈。这更接近我想要的。我会更新这个问题。可以有任意数量的技能(最多15项)。这里的min,max方法只适用于两种情况(如您所说)。现在更新…您不想为此创建15列(或者更多)。最好把每一项技能分开,我想我明白你在说什么。我正在使用一个已经存在的巨大数据库。我对SQL仍然很陌生,我相信有一个很好的理由让这些技能从另一个角度开始。然而,现在,表1中的角色ID在表2中将有大约8个独特的技能ID。只是尽可能清晰地显示这些信息。所有技能都是逗号分隔的值如何?如果有一种方法可以显示每个“技能”中由逗号分隔的所有“奖励”值,那就太棒了。表1.*表2。(所有奖金均以逗号表示):)
select
  t1.id,
  t1.strength,
  t1.agility,
  group_concat(t2.skill,',') bonuses
from table1 t1
left outer join
table2 t2
on t1.id = t2.id
where t1.id = 8
group by
  t1.id,
  t1.strength,
  t1.agility;