請原諒我,如果我沒有正確解答這個問題。這是我想要做的:如何使用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? –