Заявление MYSQL - PullRequest
       2

Заявление MYSQL

3 голосов
/ 21 апреля 2011

Я хочу выбрать пользователей, которые имеют одинаковые city_id и country_id с текущим пользователем.

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

это выглядит примерно так?

SELECT id, country_id, city_id, surname FROM users WHERE 
   country_id = (SELECT id,country_id FROM users WHERE id = 'current_user') AND 
   city_id = (SELECT id, city_id FROM users WHERE id = 'current_id')

какие-либо идеи, пожалуйста?

Ответы [ 3 ]

4 голосов
/ 21 апреля 2011
SELECT u2.id, u2.country_id, u2.city_id, u2.surname 
    FROM users u1
        INNER JOIN users u2
            ON u1.country_id = u2.country_id
                AND u1.city_id = u2.city_id
                AND u1.id <> u2.id
    WHERE u1.id = 'current_id'
1 голос
/ 21 апреля 2011

Для начала, вам не следует выбирать поля id в подзапросах.

Вместо этого посмотрите на что-то вроде:

SELECT id, country_id, city_id, surname
FROM users
WHERE country_id = (SELECT country_id FROM users WHERE id = 'current_id')
  AND city_id    = (SELECT city_id    FROM users WHERE id = 'current_id')
0 голосов
/ 21 апреля 2011

Франк,

.. WHERE country_id = (SELECT id,country_id FROM users ..

вы сравниваете одно значение ( country_id ) с двухколоночным набором результатов ( id , country_id ).Это неправильно.

Ваш запрос, переписанный, будет:

SELECT id,country_id,city_id,surname FROM users WHERE country_id = (SELECT country_id FROM users WHERE id = 'current_user') AND city_id = (SELECT city_id FROM users WHERE id = 'current_id')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...