结合两个mysql结果

时间:2014-03-14 15:44:31

标签: php mysql jointable

我有两个多连接查询。 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为str​​eet1,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为str​​eet1, 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

2 个答案:

答案 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