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


Автор: Spiker 20.4.2015, 16:15
У меня есть два стола в базе данных с листом заказов и с рекомендации от клиентов

Пример полей в столе "заказы" (enquiry)
`id`, `completed`

Пример полей в столе "рекомендации" (testimonial )
`id`, `enquiry_id`

Мне надо найти все заказы у которых нету рекомендации, чтото наподобие 
SELECT *
FROM `enquiry`, `testimonial`
WHERE `enquiry`.`completed` = 1 AND `testimonial`.`enquiry_id` <> `enquiry`.`id`

В данный момент я делаю следующее:
1. Нахожу все рекомендации (SELECT * FROM `testimonial`)
2. Результат с (1) поступает array в котором находятся enquiry_id ($exclude_id = array(12, 54, 22, 67))
3. Нахожу все заказы у которых нету рекомендации (SELECT * FROM `enquiry` WHERE `completed` = 0 AND `id` NOT IN ($exclude_id))

Мне интересно узнать как можно было-бы это сделать быстрее? я использую CodeIgniter с Аctive Record.


--------

"SELECT enquiry.*
FROM `enquiry`
LEFT JOIN `testimonial` ON `testimonial`.`enquiry_id` = `enquiry`.`id`
WHERE testimonial.enquiry_id is NULL"

выводит нужный результат

Автор: baldina 21.4.2015, 15:57
одним запросом лучше
можно и вот таким
Код

select * from enquiry where id not in (select distinct enquiry_id from testimonial)

для быстроты индексы полезны

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