2013-07-09 150 views
-1

我有3个表,全部包含一些文章:文章,专栏和报告。所有表都有一个名为date的列,其中包含添加记录时的Unix时间戳。SQL从多个表中获取数据

现在,我想获取最近添加的50篇文章,专栏和报告表的记录,并将它们列在网页上。由于文章和专栏可以具有相同的唯一ID,因此还需要知道哪个结果来自哪个表,以便链接到完整的文章(www.webpage.com/article/12或www.webpage.com/column/12例如)。

达到此目的的最佳方法是什么?

+0

哪个SQL供应商? MySQL,PostgreSQL,MS SQL Server,SQLite等? – MatBailie

+0

MySQL,InnoDB .. – Tomzie

回答

1

坦率地说,最好的方法可能是将元素拉入不同的变量。无论如何,这是一个替代方案,如果你想同时做到这一点:

SELECT a.date, a.title, 'ARTICLE' category 
FROM articles a 
WHERE date > :date 
UNION ALL 
SELECT date, title, 'COLUMN' category 
FROM columns 
WHERE date > :date 
UNION ALL 
SELECT date, title, 'REPORT' category 
FROM reports 
WHERE date > :date 

这样的事情,无论如何。这个想法是,你可以在每个子选择语句中包含一个引用源表的标志。

+0

很好的解决方案,谢谢。你如何将元素拉入不同的变量?分别从不同的表中选择数据并将它们存储在不同的变量中?您认为哪种方法是基于性能的最佳方法? – Tomzie

+0

减少SELECT语句的效率可能更高,但您必须仔细研究,看看在您的特定设置下哪些功能具有最佳性能。 –