Отображение отношения m: n в базе данных - PullRequest
0 голосов
/ 04 февраля 2012

как создать команду mysql для отображения данных с отношением m: n?

я могу использовать объединение для отображения отношения 1: n, но при построении отношения m: n создается другая таблица, и когдая пытаюсь сделать то же самое, он показывает только одну таблицу плюс таблицу отношений.

Например, у меня есть:

Таблица A:

  • A_id
  • A_data

таблица B:

  • B_id
  • B_data

таблицаC:

  • A_A_id
  • B_B_id

Я могу отобразить таблицу так, чтобы у меня было

A_id | A_data | A_A_id | B_B_id

с некоторыми данными.

, но мне нужен формат

A_id | A_data | B_id | B_data

, где A_id соответствует B_id в таблице C. Я делаю это через внешний ключссылка, с движком InnoDB MySQL.

спасибо

1 Ответ

2 голосов
/ 04 февраля 2012

Если вы хотите, чтобы C была базовой таблицей для запроса (т. Е. В основном взять таблицу C и добавить в соответствующие строки _data), вы можете использовать:

SELECT A.A_id, A.A_data, B.B_id, B.B_data
FROM C
LEFT JOIN A ON A.A_id = C.A_A_id
LEFT JOIN B ON B.B_id = C.B_B_id

Это займет таблицу Cи JOIN s передать его двум другим таблицам, используя C в качестве базовой таблицы (из-за LEFT JOIN).Если в C есть строки, которых нет в A или B, вы просто получите соответствующий NULL для поля _data.

Возможно, вы захотите взглянуть на различные объединения (INNER, LEFT, RIGHT, ...) , чтобы увидеть, какое поведение вы хотите.

Например, вы можете захотеть, чтобы все идентификаторы, присутствующие в таблице A, отображались, даже если их нет в C(и просто отобразите NULL для соответствующих столбцов B) и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...