Почему этот MySQL Query возвращает две строки? - PullRequest
0 голосов
/ 29 апреля 2011

мой запрос возвращает две строки, где секунда является точной копией первой. Я хотел бы знать причину, почему это происходит? я знаю, если я поставлю LIMIT 1 в конце, он вернет только одну строку, поэтому я бы попросил не предлагать это решение. вот мой запрос

SELECT u.username,u.password,u.registerDate,u.lastVisitDate,u.lastVisitIp,
u.activationString,
u.active,u.block,u.contact_id,c.name,c.email,c.pPhone,c.sPhone,c.rPhone,c.area_id,
a.name as areaName, a.city_id, ct.name as cityName, ct.state_id, s.name as stateName, 
s.country_id, cn.name as countryName 
FROM users u 
LEFT JOIN contacts c 
ON (u.contact_id = c.id) 
LEFT JOIN areas a 
ON (c.area_id = a.id) 
LEFT JOIN cities ct 
ON (a.city_id = ct.id) 
LEFT JOIN states s 
ON (ct.state_id = s.id) 
LEFT JOIN countries cn 
ON (s.country_id = c.id) 
WHERE u.id = 1

Приведенный выше запрос извлекает данные из 6 таблиц, которые включают

users s
contacts c
areas a
cities ct
states s
country cn

все 6 приведенных выше таблиц имеют первичный ключ с именем id внешние ключи:

users.conntact_id
contacts.area_id
areas.city_id
cities.state_id
states.country_id

почему он возвращает две строки вместо одной?

1 Ответ

2 голосов
/ 29 апреля 2011

Одна из таблиц, в которую вы входите, содержит более одного элемента, поэтому все остальные повторяются. Эта таблица, скорее всего, является таблицей contacts.

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