我是MySQL和PHP的新手,我来自OO背景,试图围绕SQL查询来包装头,这有点令人沮丧。现在我试图在给定用户ID和类别的同一表中找到所有匹配的ID。MySQL加入澄清
下面是我试图回答的问题:给定用户A和类别X,还有哪些其他用户在类别X中与用户A具有相同的兴趣以及这些兴趣是什么?
下面的代码我到目前为止:
CREATE TEMPORARY TABLE IF NOT EXISTS t_int_map AS (
SELECT intmap.fb_id, intmap.interest_id
FROM interest_map AS intmap
INNER JOIN interests AS i ON intmap.interest_id = i.id
WHERE intmap.fb_id = <ID of User A> AND i.category = '<Category User A selects');
SELECT im.fb_id, im.interest_id, i.name
FROM interest_map AS im
INNER JOIN interests AS i ON im.interest_id = i.id
INNER JOIN t_int_map AS t_
WHERE t_.interest_id = im.interest_id
这是给我所有利益用户A的结果集具有在X类以及谁拥有匹配其他用户该类别下的利益。我想放弃所有不与其他用户共享的兴趣。 IE:如果用户A在X类下有10个利益,并与用户B共享2个利益,我想只看到包含共享兴趣的行(所以总共有6行,3对于用户A,对于B为2,对于C为1)。
最好的做法是创建一个像这样的临时表,还是有更好的方法来做到这一点?我宁愿不创建一个临时表,但我无法获得一个子选择查询来工作,该子选择返回多于一行。任何和所有的建议非常感谢,谢谢!
谢谢!我正在研究使用变量作为另一个潜在的解决方案,我在临时中只有临时表解决方案。现在我只需要修改它并转换成PHP。 –