我有两个多连接查询。 1表示来自“会话”表的产品,另一个表示来自“包”表的产品。两个查询都必须加入我的订单和order_items表。
在我们的订单列表网页中,单个订单应如下所示:
|order id | products|
|123 | A2,PKG1 |
每个单独的查询组会对产品进行汇总,但如何对来自两个不同联接查询的concat产品进行分组?
我最初的想法是连接表,但我的同事说只是使用对象。
我真的不想编写代码/构造对象,因为产品只是用于显示。
任何人都可以提出快速简单的建议吗?除连接表或使用对象之外的任何其他内容。
以下是我的2个查询:
会话 选择ats_store.order.payment_type,production_www.paypal_transactions.createdOn作为order_date,production_www.paypal_transactions.FIRSTNAME作为名字, production_www.paypal_transactions.LASTNAME作为姓氏,ats_store.order.id作为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为city,ats_store.shipping_address.state_and_province为state,ats_store.shipping_address.zip_code为zip,GROUP_CONCAT(production_cache_salesforce_repl。 ats_conference_session__c.Name by 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 LEFT JOIN ats_store.shipping_address ON ats_store.shipping_address.id = ats_store.order.shipping_address_id INNER JOIN ats_store.order_items ON 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 JOIN production_cache_salesforce_repl.ats_conference_session__c 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网上商店'和production_www.paypal_transactions.RESPMSG ='已批准' group by ats_store.order.id order by order_date
软件包: 选择ats_store.order.payment_type,production_www.paypal_transactions.createdOn作为order_date,production_www.paypal_transactions.FIRSTNAME作为名字, production_www.paypal_transactions.LASTNAME作为姓氏,ats_store.order.id作为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为city, ats_store.shipping_address.state_and_province为state,ats_store.shipping_address.zip_code为zip, 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) 作为产品 来自ats_store.order LEFT JOIN ats_store.shipping_address ON ats_store.shipping_address.id = ats_store.order.shipping_address_id INNER JOIN ats_store.order_items ON 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 JOIN 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 ='已批准' group by ats_store.order.id order by order_date
答案 0 :(得分:1)
为简化起见,请执行以下操作:
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
只需确保所有视图都包含相同数量的字段和名称。
这是否符合您的需求?
答案 1 :(得分:0)
SELECT order_id, products FROM session
UNION
SELECT order_id, products FROM package