0

だから私は誰かからすべての興味を取得し、それらをリストできるようにしようとしています. これは、次のクエリで機能します。

SELECT *,(
    SELECT GROUP_CONCAT(interest_id SEPARATOR ",")
    FROM people_interests
    WHERE person_id = people.id
) AS interests
FROM people
WHERE id IN (
    SELECT person_id
    FROM people_interests
    WHERE interest_id = '.$site->db->clean($_POST['showinterest_id']).'
)
ORDER BY lastname, firstname

私が問題を抱えているこの問題では、 という名前のテーブルにたまたま ID がある人だけを選択したいと考えていますvolleyballplayers。テーブルには、id、person_id、team_id、および日付フィールドのみがあります。

SELECT *,(
    SELECT GROUP_CONCAT(interest_id SEPARATOR ",")
    FROM people_interests
    WHERE person_id = people.id
) AS interests
FROM people
WHERE id IN (
    SELECT person_id
    FROM people_interests
    WHERE volleyballplayers.person_id = person_id
)
ORDER BY lastname, firstname

volleyballplayers テーブルにいる人だけが表示されるようにしたいのですが、Unknown column 'volleyballplayers.person_id' in 'where clause'テーブルの名前は確かで、列の名前が person_id であることはわかっていますが、というエラーが表示されます。

4

1 に答える 1

1

サブクエリで結合してみてください。

SELECT  *, GROUP_CONCAT(interest_id) interests
FROM    people a
        INNER JOIN people_interests b
            ON b.person_id = a.id
        INNER JOIN
        (
            SELECT DISTINCT person_id
            FROM volleyballplayers
        ) c ON b.person_id = c.person_id
GROUP BY a.id
ORDER BY lastname, firstname
于 2012-10-04T21:46:43.170 に答える