加入4个表,2个一对一的关系

时间:2016-07-18 16:40:10

标签: mysql join subquery

主表“video_index”包含“author_index”和“category_index”的外键。

“feature_main_rel”表包含“video_index”

的外键

我想加入所有这些,以便只有有效作者和有效作者的有效视频。显示功能周期内的类别。我尝试了以下查询,但收到了错误

查询:

SELECT
    *
FROM
    author_index AS a JOIN (
        SELECT
            *
        FROM
            video_index
        JOIN
            feature_main_rel
        ON
            video_index.id = feature_main_rel.video_id
    ) AS fv
        ON a.id = fv.author_id
    JOIN category_index AS c
        ON fv.category_id = c.id
WHERE
    video_index.remove = '0' AND
    video_index.active = '1' AND
    video_index.publish_start <= '$current_time' AND
    video_index.publish_end >= '$current_time' AND
    author_index.remove = '0' AND
    author_index.active = '1' AND
    category_index.remove = '0' AND
    category_index.active = '1' AND
    feature_main_rel.remove = '0' AND
    feature_main_rel.active = '1' AND
    feature_main_rel.start <= '$current_time' AND
    feature_main_rel.end >= '$current_time'
GROUP BY
    video_index.id
ORDER BY
    RAND()
LIMIT
    1

错误:

SQLSTATE[42S21]: Column already exists: 1060 Duplicate column name 'id'

1 个答案:

答案 0 :(得分:0)

http://dev.mysql.com/doc/refman/5.7/en/from-clause-subqueries.html

  

子查询选择列表中的任何列都必须具有唯一的名称。

因此,您应该明确命名子选择中的列,因为似乎有id - 列然后与外部select *碰撞