Mysql-запрос с group_concat в подзапросе не дает правильных результатов - PullRequest
0 голосов
/ 02 мая 2011

У меня есть 2 таблицы:

  • категория (inter_archi_cat таблица) и их связь с другими
  • сущностей (inter_archi таблица)

Я хочу выбрать только те категории, которые связаны с какой-либо сущностью.

SELECT * 
  FROM inter_archi_cat 
 WHERE id IN (SELECT GROUP_CONCAT(DISTINCT sub_cat) as allcat 
                FROM inter_archi)

Если я запускаю подзапрос индивидуально, я даю правильные результаты (приблизительно 40 записей). Но при работе с основным запросом он дает только 1 запись.

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Вам не нужно использовать IN и подзапрос.Вы можете добиться того же результата, используя простое внутреннее соединение:

SELECT ic.* FROM inter_archi_cat ic 
JOIN inter_archi i 
ON i.sub_cat = ic.id 
GROUP BY ic.id

, что будет намного быстрее.

0 голосов
/ 02 мая 2011

Я сделал это:

здесь изменен запрос:

SELECT distinct cat.id,cat.name
  FROM inter_archi_cat  as cat
  join   inter_archi as inter on (cat.id in (inter.sub_cat))

получил идею от

MySQL - Как использовать подзапрос в операторе IN по значению

...