我很难创建mySQL连接语句。
问题是它似乎返回了正确的结果,但它返回重复项。
$result= mysql_query("SELECT Photos.Filename, Photos.Filetype
FROM Photos, PhotoUserTags
WHERE PhotoUserTags.User_ID IN ($friendlist) && PhotoUserTags.Photo_ID = Photos.Photo_ID && Photos.Event_ID = $eid");
我是这些陈述的新手,非常感谢任何帮助或指导。
答案 0 :(得分:6)
这是您的查询:
SELECT
Photos.Filename, Photos.Filetype
FROM Photos
INNER JOIN PhotoUserTags ON (PhotoUserTags.Photo_ID = Photos.Photo_ID)
WHERE
Photos.Event_ID = $eid
AND PhotoUserTags.User_ID IN ($friendlist) /* assuming they are IDs separated by a comma) */
GROUP BY Photos.Photo_ID;
如果你使用正确的索引来最大化你的查询性能,我也会explain
这个查询
答案 1 :(得分:5)
首先,逻辑和mysql不是&&
而是AND
,如下所示:
SELECT * from table WHERE field1 = 'value1' AND field2 = 'value2';
您还应该使用更新的连接语法:
SELECT Photos.Filename, Photos.Filetype
FROM Photos, PhotoUserTags
INNER JOIN PhotoUserTags ON PhotoUserTags.Photo_ID = Photos.Photo_ID
WHERE PhotoUserTags.User_ID IN ($friendlist)
AND Photos.Event_ID = $eid
GROUP BY Photos.Photo_ID
注意连接表达式(我使用内连接,假设两个表中都需要存在匹配的记录) - 它使您的位置更清晰,更容易阅读。
答案 2 :(得分:0)
这有用吗:
$result= mysql_query("SELECT Photos.Filename, Photos.Filetype FROM Photos, PhotoUserTags WHERE PhotoUserTags.User_ID IN ($friendlist) && PhotoUserTags.Photo_ID = Photos.Photo_ID && Photos.Event_ID = $eid GROUP BY Photos.Photo_ID");