|
|
|
| Всем привет.
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 сервис из таблицы сервисы. | |
|
|
|
|
|
|
|
для: TetRiska
(18.04.2011 в 22:57)
| | Хм... а какова цель объединения? Т.е. почему не утраивают два отдельных запроса? Просто не очень понятно: они выдают не то, что нужно, или вам все данные нужно в одной результирующей таблице? В последнем случае можно воспользоваться оператором UNION. | |
|
|
|
|
|
|
|
для: cheops
(18.04.2011 в 23:03)
| | Хочется свести к одному запросу. По отдельности они выбирают как раз то что нужно. Т.е. в моем случае:
Таблица брендов (главная) содержит 10 брендов с уклоном на продукцию (em_business_group_module = 'produce') и 5 с уклоном на сервисы (em_business_group_module = 'service').
Таблица по продукции содержит допустим 50 наименований. Они могут принадлежать как одному так и нескольким брендам с уклоном на продукцию.
Таблица по сервисам содержит допустим 20 наименований. Аналогично могут принадлежать как одному так и нескольким брендам с уклоном на сервисы.
Подсчитывать мне нечего не нужно - сколько у каждого бренда толи продукций, толи сервисов. Нужно просто вывести те бренды, у которых вообще есть записи по тем двум таблицам. Приведенные 2 запроса выводят по отдельности, а вот как бы объединить си чудо или как лучше написать? | |
|
|
|
|
|
|
|
для: 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`
|
| |
|
|
|
|
|
|
|
для: cheops
(18.04.2011 в 23:24)
| | все верно, спасибо и все же поинтересуюсь, получается это как бы 1 запросом и быстрее в работе чем 2 отдельных, верно? | |
|
|
|
|
|
|
|
для: TetRiska
(18.04.2011 в 23:27)
| | Не думаю, что зверски быстрее... на уровне MySQL так же, на уровне PHP экономите одно сетевое обращение к MySQL (в принципе экономия есть, но я бы за ней не гнался - не стоит свеч, если два запроса удобнее - используйте два). | |
|
|
|
|
|
|
|
для: cheops
(18.04.2011 в 23:32)
| | ясно, намотаю на ус :) спасибо еще раз | |
|
|
|