2013-02-11 4 views
1

у меня есть две таблицы, как этотВключить нулевые результаты в GROUP_CONCAT

profile_answers

+---------+------------+ 
|  id | class_name | 
+---------+------------+ 
|  1 | Class 1 | 
|  2 | Class 2 | 
|  3 | Class 1 | 
+---------+------------+ 

образования

+---------+--------------------+------------+ 
|  id | profile_answers_id | sample | 
+---------+--------------------+------------+ 
|  1 | 1     |  1234 | 
|  2 | 1     |  2334 | 
|  3 | 1     |  3434 | 
+---------+------------+--------------------+ 

Я побежал запрос,

select educations.profile_answer_id, GROUP_CONCAT(educations.sample) from educations 
LEFT JOIN profile_answers ON educations.profile_answers_id = profile_answers.id 

Я получил

+--------+--------------------+-------------+ 
|  id | sample       | 
+---------+--------------------+------------+ 
|  1 | 1234,2334,3434     | 
+---------+------------+--------------------+ 

Я на самом деле хочу,

+--------+--------------------+-------------+ 
|  id | sample       | 
+---------+--------------------+------------+ 
|  1 | 1234,2334,3434     | 
|  2 | NULL       | 
|  3 | NULL       | 
+---------+------------+--------------------+ 

ответ

0

Выглядит, как вы упускаете свой GROUP BY:

select profile_answers.id, GROUP_CONCAT(educations.sample) 
from profile_answers 
LEFT JOIN educations ON educations.profile_answers_id = profile_answers.id 
GROUP BY profile_answers.id 

Я также изменил ваш РЕГИСТРИРУЙТЕСЬ сделать таблицу profile_answers ваш главный стол.

Удачи.

+0

, но после этого, добавление group_by вызвало время выполнения этого запроса очень долго. некоторые, где около 15 секунд для 4000 записей –

+0

@ManjunathManohar - вы можете попросить его оставить, но я думал, что это необходимо с GROUP_CONCAT. – sgeddes

+0

http://dpaste.com/919899/. По этому запросу потребовалось 15 секунд –

1
SELECT id,IFNULL(samples,'NULL') sample FROM 
(
    SELECT 
     AA.id, 
     GROUP_CONCAT(DISTINCT BB.sample) samples 
    FROM 
     profile_answers AA LEFT JOIN educations BB 
     ON AA.id = BB.profile_answers_id 
    GROUP BY AA.id 
) A;