Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка многие ко многим / 9 сообщений из 9, страница 1 из 1
25.10.2004, 16:25
    #32753263
linke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка многие ко многим
Допустим есть четыре таблицы:
Материал(id,name_material),среда(id,name_sreda),Изделие(id,name,pole1,pole2),
Temp(id_material,id_sreda)(используется для связи многие ко многим)
Как можно выбрать все изделия у которых материал соответствует нескольким средам.
...
Рейтинг: 0 / 0
25.10.2004, 16:27
    #32753269
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка многие ко многим
а где у вас вообще изделия к материалам привязано?
...
Рейтинг: 0 / 0
25.10.2004, 16:30
    #32753281
linke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка многие ко многим
ну в таблице изделия ещё поле id_material надо
...
Рейтинг: 0 / 0
25.10.2004, 16:41
    #32753319
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка многие ко многим
делаем left join для изделия с матеpиалом и что получается join с средами. Цепляем ко всему этому group by(изделие.ид)

А в список полей - изделие.имя, count(distinct среда.ид) as skolko_tam_sred и в самый конец запроса

having skolko_tam_sred>1 (чтобы отсеить те изделия где одна среда)
...
Рейтинг: 0 / 0
25.10.2004, 16:58
    #32753360
linke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка многие ко многим
Хрен
и что получается join с средами

Я что-то вот этот момент не очень понял
...
Рейтинг: 0 / 0
25.10.2004, 17:09
    #32753393
linke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка многие ко многим
Код: plaintext
1.
2.
3.
4.
5.
6.
select `modification`.`modification`,`modification`.`DN`,count(sreda.id) as kol_sred
   from `modification`
   left JOIN `material`   ON `modification`.`material`=material.id
   left join sreda on `modification`.id_sreda=sreda.id
group by modification.id
having kol_sred> 1 
Что-то типа такого
...
Рейтинг: 0 / 0
25.10.2004, 17:11
    #32753401
Хрен
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка многие ко многим
Код: plaintext
1.
 select материал.id , count(distinct temp.id_sreda) as skolko_sred from изделие left join материал on (материал.id = изделие.material_id) , temp where  (temp.id_materiala = материал.id) group by (изделие.id) havinf skolko_sred> 0 

Писал естественно навскидку, так что может понадобиться отладка.
...
Рейтинг: 0 / 0
25.10.2004, 17:13
    #32753408
linke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка многие ко многим
Отладка точно понадобится:), но все равно спасибо.Суть ясна,дальше буду разбираться
...
Рейтинг: 0 / 0
25.10.2004, 18:10
    #32753606
linke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выборка многие ко многим
Вопрос в догонку, если хочу делать where по таблице среды(например по названию среды), то выборка происходит очень долго, как быть
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка многие ко многим / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]