Двойники в MySQL Query - PullRequest
       2

Двойники в MySQL Query

0 голосов
/ 09 июня 2011

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

  SELECT profiles.id 
    FROM `profiles`,`users` 
   WHERE profiles.zipcode = '$ZIPCODE' 
ORDER BY users.full_name ASC

Это как шоу удваивается.

Ответы [ 3 ]

2 голосов
/ 09 июня 2011

Вам нужно объединение, я думаю, попробуйте что-то вроде

SELECT Users.full_name
FROM Users
INNER JOIN profiles
ON profiles.user_id = users.id
WHERE profiles.zipcode = '$ZIPCODE' 
ORDER BY users.full_name ASC

Я предполагаю, что в таблице профилей есть внешний ключ для пользователей?Ответ предполагает наличие внешнего ключа user_id в таблице профилей

РЕДАКТИРОВАНИЕ:

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

0 голосов
/ 09 июня 2011

В своем запросе вы делаете это:

FROM `profiles`,`users`

и не предоставляете условия JOIN или WHERE относительно взаимосвязи этих таблиц.В результате получается декартово произведение.Тебе повезло, что ты получаешь только двойки;результат легко может быть больше.

0 голосов
/ 09 июня 2011

Если вы хотите показывать только разные идентификаторы, то это будет работать (в зависимости от вашего диалекта SQL, вы также можете выбрать разные profiles.id и пропустить группу по выражению).

   SELECT profiles.id 
   FROM (select * from `profiles`,`users` 
         WHERE profiles.zipcode = '$ZIPCODE' 
         ORDER BY users.full_name
         )subquery
   GROUP BY profiles.id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...