Использование вложеных подзапросов

LanCasterUser

Новичок
Д.Д.
Есть таблица в MySQL
В одну из колонок строки этой таблицы вставляется значение первичного ключа другой строки (по логике - это таблица пользователей.В некоторых случаях один пользователь может быть "закреплен" за другим.Вот и пытаюсь реализовать без еще одной таблицы)
При попытке селекта возникают проблемы:
Скрин таблицы - http://prntscr.com/8adt58
Текст запроса:
Код:
SELECT
            usr_id,
            usr_id_in_db,
            usr_name,
            usr_email,
            usr_pass,
            usr_type,
            usr_id_diller,
            (SELECT diller.usr_name FROM mill_users as diller
            WHERE diller.usr_id = mill_users.usr_id_diller)
            as usr_id_diller_name,
            usr_lang,
            usr_country,
            (SELECT country_name_eng FROM mill_country as country WHERE country.country_id = usr_country) as usr_country_name,
            usr_addr,
            usr_index,
            usr_city,
            usr_discount,
            usr_active
FROM mill_users
ORDER BY usr_type DESC
Проблема в том - что значение ячейки usr_id_diller я получаю без проблем.Но когда я пытаюсь исп. это значение в логическом операторе вложеного запроса (

Код:
  (SELECT diller.usr_name FROM mill_users as diller
            WHERE diller.usr_id = mill_users.usr_id_diller)
) - то я получаю Null в итоге.
Если же я тупо пишу -

Код:
            (SELECT diller.usr_name FROM mill_users as diller
            WHERE diller.usr_id = 3)
...то все отрабатывает.Делаю вывод - что не получаю значение mill_users.usr_id_diller

В чем может быть проблема или что я неправильно делаю?
Спс.
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
Это не совсем та помощь, на которую я рассчитывал)))
Если вы хотели, чтобы кто-то составил запрос ЗА вас, то вы ошиблись форумом.

Что конкретно неправильно в этой части?
Код:
(SELECT diller.usr_name FROM mill_users as diller
WHERE diller.usr_id = mill_users.usr_id_diller)
А "эта часть" возвращает те данные, которые вам нужны?
 

LanCasterUser

Новичок
нет.В том и проблема -
Если я делаю запрос
Код:
(SELECT diller.usr_name FROM mill_users as diller
WHERE diller.usr_id = mill_users.usr_id_diller)
то ничего не получаю

Если же я тупо ставлю значение руками
Код:
(SELECT diller.usr_name FROM mill_users as diller
WHERE diller.usr_id = 3)
то вложеный запрос отрабатывает

Из чего я делавю вывод - mill_users.usr_id_diller - я не получаю никаких данных и в следствии логическое условие не отрабатывает
Но вот почему я не получаю значение mill_users.usr_id_diller - этого я не понял
 

AnrDaemon

Продвинутый новичок
Думаю, вам надо вернуться к книжке. Ошибка простейшая, но вы её почему-то игнорируете.
Подсказка: вам вложенные запросы вообще не нужны.
 

LanCasterUser

Новичок
В одной строке получить данные другой строки без вложенного запроса.Ммммм..Возможно.А можно подробнее.Тему ткните пжл
 

AnrDaemon

Продвинутый новичок
Не в строке. Прочтите свои запросы, у вас тупо идёт объединение везде. Вот и объедините нормально.
 
Сверху