'ga_mise_en_stage' alias 'm'
and 'ga_annee_academique' alias 'ac'
和
'ga_annee_academique'
上的有foreign key that point to 'ga_mise_en_stage'
。
我很难在同一个ligne中查询m.code_mise_stage,m.Libelle和所有与m.code_mise_stage相关的ac.annee_academique
schema for ga_mise_en_stage : code_mise_enstage(pk), libelle
schema for ga_annee_academique : code_annee_academique(pk), annee_academique, code_mise_en_stage(fk)
我想要逗号分隔的结果
m.*, "ac.annee_academique, ..."
答案 0 :(得分:1)
您需要加入外键..
select m.code_mise_stage, m.Libelle, ac.annee_academique, ac.*
FROM ga_annee_academique ac
inner join ga_mise_en_stage m
on ac.code_mise_en_stage = m.code_mise_enstage
修改强> 逗号分隔列表 - 这仅适用于SQL Server
SELECT m.code_mise_stage, m.Libelle, STUFF((SELECT ',' + ac.annee_academique
FROM ga_annee_academique ac
WHERE m.code_mise_enstage=ac.code_mise_en_stage
FOR XML PATH('')), 1, 1, '') AS listStr
FROM ga_mise_en_stage m
GROUP BY m.code_mise_stage, m.Libelle
编辑:使用系统表使此示例更通用。
select t.TABLE_NAME, STUFF
(
(select ', ' + c.COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = t.TABLE_NAME FOR XML PATH(''))
, 1,1, ''
)
from INFORMATION_SCHEMA.TABLES t where TABLE_NAME = 'ga_mise_en_stage'
以下是XML PATH
的文档在此示例中,下面的查询将XML作为字符串返回,其中每个元素由','分隔,用作XML元素。
select ', ' + c.COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS c
WHERE c.TABLE_NAME = 'FormulaMetrics_tbl' FOR XML PATH('')
答案 1 :(得分:0)
查询将是这样的:
select M.LIBELLE_STAGE, M.CODE_MISE_STAGE, JOINATE.anneeAcademique from ga_mise_en_stage m
inner join (select AC.CODE_MISE_EN_STAGE, listagg(AC.ANNEE_ACADEMIQUE, ',') within group (order by AC.CODE_MISE_EN_STAGE) as anneeAcademique from ga_annee_academique ac
group by AC.CODE_MISE_EN_STAGE) joinate
on JOINATE.CODE_MISE_EN_STAGE = M.CODE_MISE_STAGE