查询公共字段的多个表,然后按1个公共字段排序

时间:2014-03-15 10:45:37

标签: mysql sql

我有3张桌子(博客,新闻,照片)。

所有表都有以下公共字段(id,pub_date,title)。

我想查看3个表格中的最新发布内容,我还希望获得id,title和pub日期,并且最好知道每个内容的表格(即博客,新闻等)

这就是我所拥有的,它产生了这个错误 - 'on clause'中的未知列'b.pub_date'“)

SELECT b.id, b.pub_date, b.title,\
    n.id, n.pub_date, n.title,\
    p.id, p.pub_date, p.title FROM
    blog b,\
    news n,\
    photos p\
    JOIN n ON b.pub_date = n.pub_date\
    JOIN p ON b.pub_date = p.pub_date\
    WHERE b.is_published=1 AND n.is_published=1 AND p.is_published=1\
    ORDER by b.pub_date LIMIT %s", [limit]);

除了它可能会带来有关模型设计的可疑问题之外,我如何才能从查询中获得所需的信息?

谢谢,

2 个答案:

答案 0 :(得分:1)

您的JOIN语法不正确,应该是:

FROM blog b
JOIN news n ON b.pub_date = n.pub_date
JOIN photos p ON b.pub_date = p.pub_date

答案 1 :(得分:0)

我实际上在IRC的帮助下解决了这个问题,在Plushy和Twist-的道具上#sql

    SELECT id, pub_date, title FROM blog WHERE is_published=1\
    UNION\
    SELECT id, pub_date, title FROM news WHERE is_published=1\
    UNION\
    SELECT id, pub_date, title FROM photos WHERE is_published=1\
    UNION\
    ORDER by pub_date LIMIT %s", [limit]);