2012-10-04 36 views
0

所以我试图从某人那里检索所有的兴趣,并能够列出它们。这适用于以下查询。比较一个id到不同的表行的id mysql

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 

在这其中一个我有麻烦,我想只选择那些谁正好有自己的命名volleyballplayers表ID。该表只有一个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。

回答

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