我有两个表,用于存储不同类型事件的详细信息。 这些表几乎相同,包括日期,持续时间等字段。我正在尝试在两个表上执行连接,并按相互字段'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;
答案 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()