棘手的MySQL代码逻辑

时间:2013-05-23 16:57:31

标签: php mysql

  1. default_albums表用于存储相册数据。
  2. default_hottest_categories表用于存储类别 数据
  3. default_album_hc_connect表用于将default_hottest_categories表与default_albums表连接起来 表
  4. 我需要能够显示is_hottest类别的所有相册。 is_hottest列位于default_hottest_categories表中。以下代码是我到目前为止的代码:

    $q1 = $this->db->query("SELECT * FROM default_albums a, default_hottest_categories d INNER JOIN default_album_hc_connect dc
                            ON d.id = dc.hottest_categories_id INNER JOIN default_albums ON dc.albums_id = default_albums.album_id
                            WHERE d.is_hottest = 'Yes'");
    

    我真的不知道这是否正确。所以,如果你能帮助我,我会非常感激。

1 个答案:

答案 0 :(得分:1)

这应该有效。您的FROM子句中有一个额外的default_albums表实例。我删除了。此外,您通常希望将所有表格连接在一起。你在那里使用的逗号用于CROSS JOINS,但在这种情况下不经常使用,也不需要。另外,我建议您只在SELECT子句中使用所需的字段。

SELECT * 

FROM   default_albums a

       INNER JOIN default_album_hc_connect dc
       ON a.albums_id = dc.album_id

       INNER JOIN default_hottest_categories d 
       ON dc.hottest_categories_id = d.id

WHERE  d.is_hottest = 'Yes'"