2014-11-03 137 views
0

我有3个顺序排定表MySQL的:选择数据从多个表

Orders1

OrderNumber, TransactionID, TrackingNumber 

Orders2

OrderNumber, TransactionID, TrackingNumber 

Orders3

OrderNumber, TransactionID, TrackingNumber 

我的订单显示的总数不完整,所以我需要从哪里TrackingNumber = ''

+0

你可以使用MySQL连接 – 2014-11-03 15:36:49

+0

究竟如何是与这些表?例如,是否可以通过相同的OrderNumber标识Orders1和Orders2行? – 2014-11-03 15:42:59

+0

他们没有任何共同的结构。我们有来自3个不同来源的订单,并存储在不同的地方。一个是eBay,另一个就是亚马逊。订单号码对表格是唯一的。 – user4210292 2014-11-03 15:46:58

回答

0

您需要使用UNION表中进行选择:

SELECT * FROM orders1 WHERE TrackingNumber = '' 
UNION 
SELECT * FROM orders2 WHERE TrackingNumber = '' 
UNION 
SELECT * FROM orders3 WHERE TrackingNumber = '' 
0

下面是一个使用子查询的方法。

SELECT 
    (SELECT COUNT(*) FROM Orders1 WHERE TrackingNumber='') 
    + (SELECT COUNT(*) FROM Orders2 WHERE TrackingNumber='') 
    + (SELECT COUNT(*) FROM Orders3 WHERE TrackingNumber='') 
AS `total` 
FROM DUAL; 

告诉我,如果它按预期工作:)

值得一说的是,你应该指数TrackingNumber领域。

0

试试这个:

select 
    sum(a.subtotal) 
from 
    (select count(*) as subtotal from Orders1 where TrackingNumber='' 
    union all 
    select count(*) as subtotal from Orders2 where TrackingNumber='' 
    union all 
    select count(*) as subtotal from Orders3 where TrackingNumber='' 
    ) a