Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: MySQL: два запроса объединить в один
 
 автор: TetRiska   (18.04.2011 в 22:57)   письмо автору
 
 

Всем привет.
SELECT a.`em_business_group_name`
        FROM `em_business_group` a    
        JOIN `em_produce` b ON (b.`em_business_group_id` = a.`em_business_group_id`)
        WHERE a.`em_company_id` = 2137 AND a.`em_business_group_module` = 'produce'
        GROUP BY a.`em_business_group_name`    

SELECT a.`em_business_group_name`
        FROM `em_business_group` a    
        JOIN `em_service` b ON (b.`em_business_group_id` = a.`em_business_group_id`)
        WHERE a.`em_company_id` = 2137 AND a.`em_business_group_module` = 'service'
        GROUP BY a.`em_business_group_name`    

Как можно такие запросы объединить? И возможно ли в принципе?

Кратко о главном.

Работа идет с 3-мя таблицами. Первая бренды, вторая таблица - продукция и третья - сервисы. Связаны 2 последние с брендами по полю em_business_group_id. Задача выбрать все бренды, где есть хотя бы 1 продукция из таблицы продукции и хотя бы 1 сервис из таблицы сервисы.

  Ответить  
 
 автор: cheops   (18.04.2011 в 23:03)   письмо автору
 
   для: TetRiska   (18.04.2011 в 22:57)
 

Хм... а какова цель объединения? Т.е. почему не утраивают два отдельных запроса? Просто не очень понятно: они выдают не то, что нужно, или вам все данные нужно в одной результирующей таблице? В последнем случае можно воспользоваться оператором UNION.

  Ответить  
 
 автор: TetRiska   (18.04.2011 в 23:15)   письмо автору
 
   для: cheops   (18.04.2011 в 23:03)
 

Хочется свести к одному запросу. По отдельности они выбирают как раз то что нужно. Т.е. в моем случае:
Таблица брендов (главная) содержит 10 брендов с уклоном на продукцию (em_business_group_module = 'produce') и 5 с уклоном на сервисы (em_business_group_module = 'service').
Таблица по продукции содержит допустим 50 наименований. Они могут принадлежать как одному так и нескольким брендам с уклоном на продукцию.
Таблица по сервисам содержит допустим 20 наименований. Аналогично могут принадлежать как одному так и нескольким брендам с уклоном на сервисы.
Подсчитывать мне нечего не нужно - сколько у каждого бренда толи продукций, толи сервисов. Нужно просто вывести те бренды, у которых вообще есть записи по тем двум таблицам. Приведенные 2 запроса выводят по отдельности, а вот как бы объединить си чудо или как лучше написать?

  Ответить  
 
 автор: cheops   (18.04.2011 в 23:24)   письмо автору
 
   для: TetRiska   (18.04.2011 в 23:15)
 

Попробуйте UNION (возможно это то, что вам нужно)
SELECT a.`em_business_group_name` 
        FROM `em_business_group` a     
        JOIN `em_produce` b ON (b.`em_business_group_id` = a.`em_business_group_id`) 
        WHERE a.`em_company_id` = 2137 AND a.`em_business_group_module` = 'produce' 
        GROUP BY a.`em_business_group_name`     
UNION
SELECT a.`em_business_group_name` 
        FROM `em_business_group` a     
        JOIN `em_service` b ON (b.`em_business_group_id` = a.`em_business_group_id`) 
        WHERE a.`em_company_id` = 2137 AND a.`em_business_group_module` = 'service' 
        GROUP BY a.`em_business_group_name`

  Ответить  
 
 автор: TetRiska   (18.04.2011 в 23:27)   письмо автору
 
   для: cheops   (18.04.2011 в 23:24)
 

все верно, спасибо и все же поинтересуюсь, получается это как бы 1 запросом и быстрее в работе чем 2 отдельных, верно?

  Ответить  
 
 автор: cheops   (18.04.2011 в 23:32)   письмо автору
 
   для: TetRiska   (18.04.2011 в 23:27)
 

Не думаю, что зверски быстрее... на уровне MySQL так же, на уровне PHP экономите одно сетевое обращение к MySQL (в принципе экономия есть, но я бы за ней не гнался - не стоит свеч, если два запроса удобнее - используйте два).

  Ответить  
 
 автор: TetRiska   (18.04.2011 в 23:34)   письмо автору
 
   для: cheops   (18.04.2011 в 23:32)
 

ясно, намотаю на ус :) спасибо еще раз

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования