Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > две выборки из связанных таблиц


Автор: bars80080 21.11.2008, 14:07
вот есть такая задача

есть две таблицы, условно назовём: 1. вольеры, 2. звери
они имеют поля id, name и status, плюс таблица зверей имеет id_vol в котором вносится идентификатор вольера в котором находится зверь
что такое статус? это активное состояние записи. т.е. если статус=1, то для вольеров это означает, что он закрыт для просмотра, а для зверей, что их типа нет (в лазарет положили)

значит что нужно? получить две выборки (в два массива) активных записей (status=0) и приэтом - для вольеров только тех, в которых есть активные звери, а для зверей только тех, которые находятся в активных вольерах

можно ли это сделать парочкой запросов или проще сделать две выборки и на пхп оттюжить?
правда, пока только перебор массива в массива приходит на ум с array_splice() пустых значений. что выглядит довольно уныло

спасибо

Автор: teroni 21.11.2008, 16:47
Код

SELECT * FROM `zveri` JOIN `voliery`
ON `zveri`.`id_vol` = `voliery`.`id`
WHERE `zveri`.`status` = 0 AND `voliery`.`status` = 0

Это второй запрос. Полученные данные собираем в пхп. 
Активные вольеры в которых есть звери - получаем помощью array_unique id-шников вольеров из этого запроса.

Автор: bars80080 21.11.2008, 17:17
спасибо, работает так как надо, всё из одного запроса можно получить

сам по себе запрос не будет утяжелять систему?
/с трудом в таких вопросах ориентируюсь/

если делать индексы, то по каким полям?

Автор: lelik133 21.11.2008, 17:58
индексы стоит сделать по полям по которым идет объединения таблиц `zveri`.`id_vol` и  `voliery`.`id`

Автор: bars80080 21.11.2008, 18:14
а, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)