Ive инструкция mysql вроде этого
SELECT distinct mk.gene as gene, qs.rs as snp, CONCAT (qs.A1, qs.A2) as genotype
FROM dallas.QS_base qs cross join
dallas.staging mk
ON qs.rs = mk.rs
WHERE qs.sampleID = 'mydna'
order by gene ASC;
который возвращает этот тип вывода
'ACE' 'RS4343', 'AA'
'ACTN3' 'RS1815739' 'TC'
из этого типа таблицы (dallas.staging)
'heart health', 'ACE', 'RS4343'
'skin health', 'ACE', 'RS4343'
'sports performance', 'ACE', 'RS4343'
'sports performance', 'ACTN3', 'RS1815739'
'longevity', 'ACTN3', 'RS1815739'
и это (dallas.QS_base)
'mydna','RS4343','A','A'
'mydna','RS1815739','T','C'
Как мне изменить оператор mysql выше, чтобы я мог получить этот вывод? Я считаю, что мне нужно использовать команду group_concat.
'ACE' 'RS4343', 'AA' '(heart health, sports performance, skin health)'
'ACTN3' 'RS1815739' 'TC' '(sports performance, longevity)'
Этот запрос должен выполнить эту работу для вас (обратите внимание, что отличительный элемент на mk.gene не нужен, поскольку вы группируете его):
SELECT mk.gene as gene, qs.rs as snp, CONCAT (qs.A1, qs.A2) as genotype, GROUP_CONCAT(mk.condition) AS conditions
FROM QS_base qs cross join
staging mk
ON qs.rs = mk.rs
WHERE qs.sampleID = 'mydna'
group by gene
order by gene ASC;
Выход:
gene snp genotype conditions
ACE RS4343 AA heart health,sports performance,skin health
ACTN3 RS1815739 TC sports performance,longevity