У меня есть эта странная проблема. По какой-то причине выбран только определенный ряд. у меня есть это user_data
Таблица:
а также website_name
Таблица
По какой-то причине с этой командой используется идентификатор пользователя 13
оно работает:
но используя идентификатор пользователя 27
это не так, но вы можете видеть, что я добавляю # 27 в email_id
ряд gumblar.cn.
Почему не работает с идентификатором 27? Я использую эту команду:
SELECT `email_address`, `handset` FROM `website_name` JOIN `user_data` USING ( id ) WHERE `email_id` ='27'
Любая помощь и объяснение приветствуется. Заранее спасибо.
У вас есть совпадение, что id == email_id для 13, вам нужно изменить
USING ( id )
в
ON (website_name.email_id = user_data.id)
РЕДАКТИРОВАТЬ:
В вашей таблице вы видите строку:
id | website |email_id
---+-----------+--------
13 | yahoo.com | 13
Вы видите, что идентификатор совпадает с email_id? Это просто совпадение, и именно поэтому оно сработало для этого числа (вы присоединяетесь к id, который просто совпадает с email_id, к которому вы ДОЛЖНЫ присоединиться).
Ваш SQL должен выглядеть так:
SELECT `email_address`, `handset`
FROM `website_name`
JOIN `user_data` ON (website_name.email_id = user_data.id)
WHERE `email_id` ='27';
Обе ваши таблицы содержат поле id
— но, очевидно, они идентифицируют разные вещи (электронные письма и веб-сайты, соответственно). Вот почему ваш JOIN
не может использовать id
поле для получения разумных результатов (то, что оно работало в течение 13 лет, является лишь случайным, а результат запроса не имеет смысла). Вам нужно использовать
JOIN user_data ON website_name.email_id = user_data.id
Другой подход будет переименовать id
поля для email_id
а также website_id
, Затем вы можете использовать JOIN user_data USING(email_id)
,
Вы присоединяетесь с идентификатором 18, и ни один из ваших пользователей не имеет идентификатора 18.
Вы должны присоединиться к нему с заявлением на:
join user_data on user_data.id = website_name.email_id