2011-11-10 53 views
0

我试图使这个问题尽可能通用......我有一个名为“Widget Sales”的单个数据库中的3个表。它们分别是:如何在查询多个表的查询中按顺序显示“日期”?

Table_1 = Purchase dates of "Small Widgets" by a Dealer. 
Table_2 = Purchase dates of "Medium Widgets" by a Dealer. 
Table_3 = Purchase dates of "Large Widgets" by a Dealer. 

我用一个简单的查询,以搜索由特定的经销商进行购买所有3个表,在这种情况下沃拉沃拉,华盛顿的ACME公司的Widget。 (哔,哔

SELECT "Dealer", "Item", "Purchase Date" 
FROM "Table_1" 
WHERE "Dealer" = 'ACME' 
UNION 
SELECT "Dealer", "Item", "Purchase Date" 
FROM "Table_2" 
WHERE "Dealer" = 'ACME' 
UNION 
SELECT "Dealer", "Item", "Purchase Date" 
FROM "Table_3" 
WHERE "Dealer" = 'ACME' 

该查询放置在下面的序列中的搜索结果示于实施例A:

首先:从“TABLE_1”的搜索结果中返回2“小”小工具

第二个:“Table_2”的搜索结果返回1个“中”小工具。

第三:来自“Table_3”的搜索结果返回1“大”小工具。

EXAMPLE A | Current Query Results 

Dealer     Item       Purchase Date 
=================================================================== 
ACME     Small Widget     06/28/2011 
------------------------------------------------------------------- 
ACME     Small Widget     09/03/2011 
-------------------------------------------------------------------  
ACME     Medium Widget     07/21/2011 
------------------------------------------------------------------- 
ACME     Large Widget     08/05/2011 
------------------------------------------------------------------- 

我的问题是:我需要什么做的,我现有的查询到有,如例B的购货日期出现在了顺次序?

我确定这是“SQL 101”,但我是新手,所以我非常感谢任何帮助。谢谢。

EXAMPLE B | Proposed Query Results 

Dealer     Item       Purchase Date 
=================================================================== 
ACME     Small Widget     06/28/2011 
------------------------------------------------------------------- 
ACME     Medium Widget     07/21/2011 
------------------------------------------------------------------- 
ACME     Large Widget     08/05/2011 
------------------------------------------------------------------- 
ACME     Small Widget     09/03/2011 
-------------------------------------------------------------------  
+1

加上' ORDER BY“购买日期”在查询 – SQLMenace

+0

@SQLMenace底部,为什么你没有发布这个答案,而不是评论?如果合适的话,OP可以标记为正确。 – Cylindric

+0

谢谢你,马丁,这工作! – user1038748

回答

0
select * from 
(
SELECT "Dealer", "Item", "Purchase Date" 
FROM "Table_1" 
WHERE "Dealer" = 'ACME' 
UNION 
SELECT "Dealer", "Item", "Purchase Date" 
FROM "Table_2" 
WHERE "Dealer" = 'ACME' 
UNION 
SELECT "Dealer", "Item", "Purchase Date" 
FROM "Table_3" 
WHERE "Dealer" = 'ACME' 
) 
ORDER BY "Purchase Date"; 

这是一个有些冒险,但应该工作。如果您使用联合查询的时候,你可能会考虑重组你的数据库,通过添加另一个字段,将决定它现在会哪个表...

+0

不幸的是,我使用的系统(ZOHO Reports)在他们的查询中不支持“FROM”?看起来像一个有趣的方式来接近我的问题,你。谢谢您的回复。 – user1038748

0

只需添加一个ORDER BY子句:

SELECT "Dealer", "Item", "Purchase Date" 
    FROM "Table_1" 
WHERE "Dealer" = 'ACME' 
    UNION 
SELECT "Dealer", "Item", "Purchase Date" 
FROM "Table_2" 
WHERE "Dealer" = 'ACME' 
    UNION 
SELECT "Dealer", "Item", "Purchase Date" 
FROM "Table_3" 
WHERE "Dealer" = 'ACME' 
Order By "Purchase Date" 
+0

谢谢Charles做到了。我感谢您花时间回答我的问题。 – user1038748