SQL加入2个类似的表

时间:2009-09-01 09:42:31

标签: php sql join

我有两个表,用于存储不同类型事件的详细信息。 这些表几乎相同,包括日期,持续时间等字段。我正在尝试在两个表上执行连接,并按相互字段'date'对它们进行排序。

我知道简单地将'type'字段添加到单个表并将其全部存储在一个地方会更简单,遗憾的是我使用的cms的性质不允许这样做。

有没有办法简单地执行此操作?以下查询不返回任何结果。

$sql = "SELECT * FROM Events_One a, Events_Two b WHERE a.Date > now() OR b.Date > now() ORDER BY Date ASC LIMIT ".$limit;

3 个答案:

答案 0 :(得分:3)

您应该查看UNION声明。它完全符合您的需求。

SELECT columns FROM t1
UNION
SELECT columns FROM t2

为您提供一组,您可以稍后根据需要进行过滤或排序。

答案 1 :(得分:1)

如果每个事件类型都有一个表格,每个事件类型都有相同的字段,我会说你应该重新考虑你的设计。这打破了规范化规则。这是一个糟糕的设计,因为它会强制您在每次新事件发生时添加另一个表。如果您可以通过向现有表添加数据(如新类型值)来添加新事件,那就更好了。

答案 2 :(得分:0)

如果您想加入两个相似的表格,您可以使用Union或union all

Union:它就像一个join命令。当使用union时,所有选定的列都需要具有相同的数据类型。只选择不同的值。

Union All:它几乎像union.There没有明确的操作,所以它将采取所有的值。

select  * FROM Events_One a   WHERE a.Date > now() 
union 
select  * FROM Events_Two b   WHERE b.Date > now()