MySQL join не может выбрать одну таблицу - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть соединение, которое работает точно так же, как и ожидалось, за исключением того, что все поля, выбранные в «правой» таблице, возвращаются пустыми, когда они определенно не являются.

SELECT score.recipient, score.amount, u.* FROM score 
LEFT JOIN `users` AS u ON score.recipient = u.id AND u.team_id = ?
WHERE UNIX_TIMESTAMP(score.date) > ?

Мне на самом деле не нужновся таблица пользователей, только users.email - но поля не работают.Набор результатов выглядит следующим образом (пример):

[0] => stdClass Object ( [recipient] => 1 [amount] => 1 [id] => [fname] => [lname] => [nickname] => [email] => [phone] => [reg_key] => )
[1] => stdClass Object ( [recipient] => 103 [amount] => -1 [id] => [fname] => [lname] => [nickname] => [email] => [phone] => [reg_key] => )

Все перечисленные поля фактически заполнены.

Любая помощь приветствуется!Я в растерянности.

1 Ответ

2 голосов
/ 04 февраля 2012

Ваше условие соединения / где условие нарушается, если замена левого соединения внутренним соединением возвращает пустой набор результатов.

Попробуйте это (без переменных связывания и их условий) и посмотрите, возвращает ли оно какие-либо значения:

SELECT score.recipient, score.amount, u.* FROM score 
LEFT JOIN `users` AS u ON score.recipient = u.id 

Если это так, посмотрите на значения для team_id / score.date, которые вы получаете - я уверен, что вы используете комбинацию значений связывания, которых просто нет в ваших таблицах.

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