2012-02-08 6 views
0

Я хочу выбрать все записи из website.advert и присоединиться к имени игрока из другой таблицы. Запрос выполняется без каких-либо ошибок, но есть проблема в том, что он выбирает дублированные записи от website.advert, когда есть более одной записи с тем же account_id в таблице игроков.Запрос выбирает дублированные записи

Вот мой запрос:

SELECT `advert`.*, `p`.`name`, `p`.`level` 
    FROM `website`.`advert` 
    LEFT JOIN `player`.`player` `p` 
    ON (`p`.`account_id` = `website`.`advert`.`author_id`) 
    WHERE `advert`.`accepted` = 0 
+0

Вы должны использовать GROUP BY статьи на 'advert.id' –

ответ

2

Вы должны использовать DISTINCT, но у меня возникли проблемы, выясняя запрос. Вы, похоже, не будет выбора каких-либо полей из website.advert

К сожалению, отредактирован:

SELECT `advert`.*, `p`.`name`, `p`.`level` 
FROM `website`.`advert` 
LEFT JOIN `player`.`player` `p` 
ON (`p`.`account_id` = `website`.`advert`.`author_id`) 
WHERE `advert`.`accepted` = 0 
GROUP BY `advert`.`id` 

Мы просто выберем id поле сейчас - попробовать, что и посмотреть, если это дает вам ближе к результатам вас ожидают.

+0

Я выбрать все поля из' website.advert' с помощью:. 'ВЫБЕРИТЕ объявление * '. – Cyclone

+0

Хорошо, никогда не видел этот способ выбора данных раньше :) Попробуйте использовать 'DISTINCT' around' advert. *' –

+0

@Вы отредактированный ответ, возвращает ошибку: 'У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с '*, 'p'.'name',' p'.'level' FROM 'website'.'advert''' – Cyclone

1

Попробуйте этот запрос:

SELECT a.*, p.name, p.level 
    FROM advert a LEFT JOIN player p 
    ON (p.account_id = a.author_id) 
    WHERE a.accepted = 0 
group by p.account_id 
Смежные вопросы