Mysql Query Relations M-M Таблица - PullRequest
       0

Mysql Query Relations M-M Таблица

2 голосов
/ 30 марта 2011

У меня небольшая проблема с запросом в MySQL. У меня есть следующие таблицы:

  • член;
  • группа;
  • member_has_group (в этом столбце id_group ссылается на идентификатор группы, а id_member ссылается на идентификатор участника)

Я пытаюсь сделать запрос, который дает мне членов из выбранной группы. Вы можете мне помочь?

Я не знаком с таблицами соединений, но для поиска, который я сделал, я думаю, что это, вероятно, одно из решений.

Заранее спасибо.

Elkas

Ответы [ 3 ]

2 голосов
/ 30 марта 2011

Если вам известен идентификатор группы

select member.* from member m
  inner join member_has_group mg on m.id = mg.id_member
where mg.id_group = [x]

Если вы знаете только имя группы

select member.* from member m
  inner join member_has_group mg on m.id = mg.id_member
  inner join group g on g.id = mg.id_group
where g.name = 'group name'
0 голосов
/ 30 марта 2011

Да, вам нужно присоединиться здесь.

SELECT *
FROM `member` 
JOIN `group` ON member.id = group.id
JOIN `member_has_group` ON group.id = member_has_group.id

В зависимости от информации, содержащейся в ваших таблицах, вам может вообще не понадобиться третья таблица. Вам понадобится только таблица соединителей, когда между вами будет отношение «многие ко многим».

(игнорируйте все остальное, если вы уже знаете, о нормализации базы данных)

Например, если у вас было две таблицы, Авторы и Книги. Авторы будут содержать такие поля, как Имя, Издатель, День рождения, все, что является собственностью «автора». Книги будут содержать соответствующую «книжную» информацию. Это отношения «один ко многим». Автор может быть связан (через поле типа author_id) с несколькими книгами, но у книги может быть только один автор. Вам не понадобится третий стол здесь.

Опираясь на это, скажем, у вас была третья таблица "Имена персонажей". Это будет список имен главных персонажей, используемых в любой из книг в таблице «Книги». Одного из героев зовут Джон Стил. Джон имеет целую серию книг, написанных о нем. В таблице «Книги» в некоторых книгах Джон Стил может быть изображен как персонаж. Находясь в таблице персонажей, Джон Стил может быть указан в нескольких книгах. Это «многие ко многим». Вам нужен третий стол здесь. Было бы только два поля. A book_id и character_id, по одной записи на каждую книгу, в которой появляется Джон Стил.

MySql Руководство по нормализации БД

0 голосов
/ 30 марта 2011

Это тривиально в SQL:

SELECT m.id_member, m.name
FROM member AS m
INNER JOIN member_has_group AS h ON (m.id_member=h.id_member)
WHERE (h.id_group=@my_id_group)

@ my_id_group - это идентификатор группы, который вы должны дать.

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