2

SQLクエリでいくつかのJOINSを実行しようとしていますが、問題が発生しました。私がする必要があるのは、poker_sitesテーブルからすべてのフィールドを選択し、から2つの相対フィールドをnetworks取得し、それが利用可能な場合はから平均評価を取得することですeditor_content

私が抱えている問題は、クエリが少なくとも3つあるはずのときに1つの行しか返さないことです。

どんな助けでも大歓迎です。

これが私のSQLです

SELECT AVG(editor_content.rating) AS rating, poker_sites.*,
networks.network_name, networks.network_icon FROM poker_sites
    LEFT JOIN networks
    ON (poker_sites.network_id=networks.network_id)
    LEFT JOIN editor_content
    ON (poker_sites.site_id=editor_content.assign_id)
    WHERE poker_sites.published=1
4

1 に答える 1

4

集計関数(この場合はAVG)で複数の結果を取得する場合は、GROUPBYが必要です。

    SELECT x.avgRating AS rating, poker_sites.*,
        networks.network_name, networks.network_icon 
    FROM poker_sites
    LEFT JOIN networks
        ON (poker_sites.network_id=networks.network_id)
    LEFT JOIN 
    (
        SELECT AVG(editor_content.rating) as avgRating, editor_content.assign_id
        FROM editor_content
        GROUP BY editor_content.assign_id
    ) x
        ON (poker_sites.site_id = x.assign_id)
    WHERE poker_sites.published=1
于 2012-09-15T01:21:47.070 に答える