Объединение двух результатов mysql

У меня есть два запроса с несколькими соединениями. 1 для продуктов, поступающих из таблицы "сеанс", другой для продуктов, поступающих из таблицы "пакет". Оба запроса должны быть связаны с моими таблицами order и order_items.

Один заказ должен выглядеть следующим образом на нашей веб-странице со списком заказов:

|order id  |  products|
|123       |  A2,PKG1 |

Каждая отдельная группа запросов объединяет продукты, но как я могу сгруппировать объединенные продукты из двух разных запросов на объединение?

Моей первоначальной мыслью была таблица соединений, но мой коллега сказал, что нужно просто использовать объекты.

Я действительно не хочу писать код/создавать объекты, поскольку продукты предназначены только для демонстрации.

Может ли кто-нибудь сделать предложение, которое быстро легко? Что угодно, кроме таблицы соединения или использования объектов.

Вот мои 2 запроса:

сеансы: выберите ats_store.order.payment_type,production_www.paypal_transactions.createdOn в качестве даты_заказа,production_www.paypal_transactions.FIRSTNAME в качестве имени, production_www.paypal_transactions.LASTNAME в качестве фамилии,ats_store.order.id в качестве идентификатора_заказа,ats_store. order.customerid,ats_store.order.shipping_address_id,ats_store.order.status,ats_store.order_items.product_id,ats_store.shipping_address.country as country,ats_store.shipping_address.street_1 as street1,ats_store.shipping_address.street_2 as street2,ats_store.shipping_address. street_3 в street3, ats_store.shipping_address.city как город, ats_store.shipping_address.state_and_province как государства, ats_store.shipping_address.zip_code как молния, GROUP_CONCAT (production_cache_salesforce_repl.ats_conference_session__c.Name заказа по production_cache_salesforce_repl.ats_conference_session__c.Sort_Code__c) в качестве продуктов, production_cache_salesforce_repl.ats_conference_session__c. Sort_Code__c из ats_store.order ЛЕВОЕ СОЕДИНЕНИЕ ats_store.sh ipping_address ON ats_store.shipping_address.id = ats_store.order.shipping_address_id ВНУТРЕННЕЕ ПРИСОЕДИНЕНИЕ ats_store.order_items ON ats_store.order_items.order_id = ats_store.order.id ВНУТРЕННЕЕ ПРИСОЕДИНЕНИЕ ON production_cache_salesforce_repl.ats_conference_session__c.Id = price.ATS_Conference_Session__c LEFT JOIN production_www.paypal_transactions ON production_www.paypal_transactions.id = ats_store.order.paypal_transaction_id, где ats_store.order.shipping_address_id != -1 и production_www.paypal_transactions.COMMENT1' и 'ATS Web Store production_www.paypal_transactions.RESPMSG = Группа «Одобрено» по ats_store.order.id заказ по order_date

пакеты: выберите ats_store.order.payment_type,production_www.paypal_transactions.createdOn в качестве даты_заказа,production_www.paypal_transactions.FIRSTNAME в качестве имени, production_www.paypal_transactions.LASTNAME в качестве фамилии,ats_store.order.id в качестве идентификатора_заказа,ats_store. order.customerid, ats_store.order.shipping_address_id, ats_store.order.status, ats_store.order_items.product_id, ats_store.shipping_address.country как страна, ats_store.shipping_address.street_1 как street1, ats_store.shipping_address.street_2 как street2, ats_store.shipping_address. street_3 как street3,ats_store.shipping_address.city как город, ats_store.shipping_address.state_and_province как штат, ats_store.shipping_address.zip_code как почтовый индекс, GROUP_CONCAT(production_cache_salesforce_repl.ats_store_package__c.Package_Code_c order by production_cache_salesforce_repl.ats_store_package__c.Package_Code_c order by production_cache_salesforce_repl.ats_store_package__c.Package) ПРИСОЕДИНЯЙТЕСЬ ats_store.shipping_address ON ats_store.shipping_address.id = ats_store.order. shipping_address_id INNER JOIN ats_store.order_items НА ats_store.order_items.order_id = ats_store.order.id INNER JOIN production_cache_salesforce_repl.ats_store_price__c цена ON price.Id = ats_store.order_items.product_id РЕГИСТРИРУЙТЕСЬ production_cache_salesforce_repl.ats_store_package__c ON production_cache_salesforce_repl.ats_store_package__c.Id = price.ATS_Store_Package__c LEFT JOIN production_www.paypal_transactions ON production_www.paypal_transactions.id = ats_store.order.paypal_transaction_id, где ats_store.order.shipping_address_id != -1 и production_www.paypal_transactions.COMMENT1 = «Интернет-магазин ATS» и production_www.paypal_transactions.RESPMSG = группа «Одобрено» ats_store .order.id заказ по order_date


person Community    schedule 14.03.2014    source источник


Ответы (2)


Для упрощения сделайте следующее:

1) Создайте представление для каждого запроса, к которому вы хотите присоединиться.

2) После создания представлений:

SELECT ProductID, SUM(Amout) FROM 
(SELECT * FROM vw_View1
UNION ALL
SELECT * FROM vw_View2
UNION ALL
SELECT * FROM vw_View3) GROUP BY ProductID

Просто убедитесь, что все представления имеют одинаковое количество полей и имен.

Соответствует ли это вашим потребностям?

person ericpap    schedule 14.03.2014
comment
Я хотел бы опубликовать оба своих запроса, но в поле для комментариев указано «слишком много символов». можно ли прикрепить к этому файл? - person ; 14.03.2014
comment
Эрикпап, это здорово. Теперь, когда я думаю об этом, мой коллега упомянул об этом. Я получаю это для своих позиций заказа: A1, A2, PKG1. Именно то, что я хочу! Я создал два вида, вот как я их использую: select *, group_concat(sv.products, ',',pv.products) from session_view sv JOIN packages_view pv ON sv.order_id = pv.order_id - person ; 14.03.2014

person    schedule
comment
Если бы мой запрос был таким коротким! Не привык использовать UNION. Я попробовал и получил «Неправильное использование UNION и ORDER BY» - person ; 14.03.2014