Как создать запрос для связи many-to-many
Есть таблица Word
id (int)
word (text)
Есть таблица PartsOfSpeech
id (int)
name (text)
Связал связанную таблицу Combinations. Занёс данные
id (int)
word_id (int)
ps_id (int)
Теперь стоит задача вывести все в единую таблицу. Пробовал через Union, но оно просто в столбик все данные вводит. А мне нужно чтобы было Word | PartsOfSpeech
SELECT p.* FROM word p
union
select ps.* from partsOfSpeech ps
Ответы (1 шт):
Автор решения: Alex R.
→ Ссылка
Если требуется вывести все введенные пары, то это обычное связывание таблиц
select
с.id,
w.name word,
ps.name PartsOfSpeech
from Combinations c,
PartsOfSpeech ps,
word w
where c.word_id = w.id
and c.ps_id = ps.id
Если требуется все варианты для слова, то
select
w.id,
w.name word,
GROUP_CONCAT(ps.name,'; ') PartsOfSpeechs
from Combinations c,
PartsOfSpeech ps,
word w
where c.word_id = w.id
and c.ps_id = ps.id
group by w.name
Если не для всех слов есть записи в Combinations, а слова надо вывести все, то необходимо использоватьLEFT JOIN.