MySQL выбор оператора, который включает group_concat

0

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)'
  • 0
    а какой у тебя вопрос?
  • 0
    @luksch: см. редактирование (как мне изменить оператор mysql для получения желаемых результатов)
Теги:
group-concat

1 ответ

1
Лучший ответ

Этот запрос должен выполнить эту работу для вас (обратите внимание, что отличительный элемент на 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
  • 0
    спасибо, я уже попробовал group_concat как определение поля, но он возвращает только одну строку
  • 0
    на самом деле группа это то, что заставило ее работать - спасибо!
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню