Я знаю, что это не хорошая практика создания таблицы, поэтому, пожалуйста, сначала отбросьте эту штуку.Выбор с подзапросами в MySQL
У меня есть таблица, скажем таблицу А и таблицу В
Table A :
| ID | fk_tableB_ID | title
-------------------------
| 10 | 1,2 | title 1
| 11 | 3 | title 2
Table B :
| ID | category
---------------
| 1 | cat1
| 2 | cat2
| 3 | cat3
Я попробовал этот запрос:
SELECT
a.ID,
a.title,
(
SELECT
group_concat(b.category)
FROM
tableB B
WHERE
B.ID IN (a.fk_tableB_ID)
) as category
FROM
tableA a
Это возвращение:
| ID | category | title
-----------------------
| 10 | cat1 | title1
| 11 | cat3 | title2
Но это не то, что я хотеть. Я хочу
| ID | category | title
-----------------------
| 10 | cat1,cat2 | title1
| 11 | cat3 | title2
Пожалуйста, помогите, что такое правильный код запроса mysql, чтобы я мог получить эту таблицу выше. Thx заранее
Параметр ' Таблица A', которую вы предлагаете, плохая конструкция, например, каждый заголовок хранится несколько раз. Возможно, есть также поле описания с большим количеством текста. Вы создаете избыточность! Третья таблица - намного лучший дизайн. –
@ Феликс, вы правы, это был всего лишь способ сделать то, что он хотел, с минимальным количеством необходимых изменений. Третья таблица действительно была бы лучшим решением. –
Thx для вашего ответа это действительно помогает. Я знаю, что это плохая таблица, но иногда я получаю таблицы точно так же (обновленный старый скрипт от другого программиста). Я подумал, может быть, я могу сделать с ним один вопрос, но теперь я знаю, что это невозможно. – aprian