Повторяющиеся значения возвращаются из оператора mySQL JOIN.Помогите? - PullRequest
1 голос
/ 18 ноября 2011

Мне трудно создать оператор соединения 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");

Я новичок в этих утверждениях, любая помощь или руководство очень приветствуются.

Ответы [ 3 ]

6 голосов
/ 18 ноября 2011

Вот ваш запрос:

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 запрос, если вы используете правильные индексы, чтобы максимизировать производительность вашего запроса

5 голосов
/ 18 ноября 2011

Для одного, логическое и в 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

Обратите внимание на выражение соединения (я использовал внутреннее соединение, предполагая, что в обеих таблицах должна быть соответствующая запись) - оно делает вашу информацию более чистой и удобной для чтения.

0 голосов
/ 18 ноября 2011

Помогает ли это:

$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");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...