请原谅我,如果我没有正确解答这个问题。这是我想要做的:如何使用SQLite group_concat(X,Y)从JOIN创建单个列?
我有两个表连接在一个包含GUID的字符串列。 表1包含有关我的数据对象的一切,而表2包含一个字符串列,我需要链接到记录从表1。对于中的每个记录,表1,有1..n记录表2。我目前使用INNER JOIN的SQLite语句正在为中的每条记录返回n条记录,表1,这并不适合我的需要。我想在表1的每条记录中找回1条记录。
然而,诀窍是我仍然希望看到表2中的所有字符串值,字符串连接为“值1;值2;值3;等等”。
我使用GROUP_CONCAT(X,Y)功能如下尝试:
SELECT o.ObservationGuid, o.ObservationID, o.ObservationParentTypeGuid,
o.ObservationTypeGuid, o.Name, o.ObservationParentName, o.GrowthStageGuid,
o.MorphologyTypeGuid, o.LifespanGuid, o.OrganismTypeGuid, o.ScientificName,
o.AgXID, o.AgGatewayID, o.Genus, o.Family, o.TaxonomicalOrder, o.Class,
o.Division, o.Kingdom, o.FavorableConditions, o.DescriptionSymptoms,
group_concat(oa.Name, '; ')
FROM Observation o
INNER JOIN ObservationAlias oa ON oa.ObservationGuid = o.ObservationGuid
WHERE ObservationTypeGuid = '{E3149781-2423-4F15-8599-CB320E871284}'
GROUP BY o.ObservationGuid COLLATE NOCASE
但是,这会导致没有返回的记录都没有。接下来,我试图通过子句除去GROUP:
SELECT o.ObservationGuid, o.ObservationID, o.ObservationParentTypeGuid,
o.ObservationTypeGuid, o.Name, o.ObservationParentName, o.GrowthStageGuid,
o.MorphologyTypeGuid, o.LifespanGuid, o.OrganismTypeGuid, o.ScientificName,
o.AgXID, o.AgGatewayID, o.Genus, o.Family, o.TaxonomicalOrder, o.Class,
o.Division, o.Kingdom, o.FavorableConditions, o.DescriptionSymptoms,
group_concat(oa.Name, '; ')
FROM Observation o
INNER JOIN ObservationAlias oa ON oa.ObservationGuid = o.ObservationGuid
WHERE ObservationTypeGuid = '{E3149781-2423-4F15-8599-CB320E871284}'
COLLATE NOCASE
这将返回1分的记录,从表1加含有每个记录的字符串值的oa.Name字段由第一匹配记录的在表2以格式 “值1;值2;值3;等等”
任何帮助将不胜感激!
当你不使用contact_group时,它会给你什么? –
你尝试过group_concat(不同的oa.Name SEPARATOR';')吗? –
你为什么使用COLLATE NOCASE? –