Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выборка из двух таблиц с условиями, Не могу составить правильный запрос 
:(
    Опции темы
phpWarm
Дата 4.12.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 3.4.2007

Репутация: нет
Всего: нет



Помогите, пожалуйста.
Есть 2 таблицы:

Код

create table `auth` (
  `id`              int(11)                 not null        auto_increment,
  `login`         varchar(20)         not null,
  `role`          varchar(8)            not null,
  primary         key(`id`)
);

и

create table `user` (
  `id`              int(11)                  not null        auto_increment,
  `secname`   varchar(30)          not null,                                        
  `id_auth`     int(11)                  default NULL,
   primary        key(`id`)
)";


В таблице auth хранятся данные аутентификации: логин, пароль, роль пользователя в системе (администратор, агент, зарегистрированный пользователь, пользователь без аутентификации созданный агентом или админом).

В таблице user хранятся данные о пользователе: фамилия, имя, ...  + ссылка на таблицу аутентификации id_auth, в которой может быть либо auth.id либо 0, если пользователь без аутентификации.

Моя проблема заключается в следующем, мне надо вывести список имен, которые являются либо пользователями с аутентификацией либо пользователями без аутентификации: 
т. е.  вывести secname, где 
Код

id_auth = 0 OR ( id_auth <> 0 AND role = 'reg_user' )


перепробовал все что мог в том числе разнообразные JOIN'ы - ничего не получается. Буду рад всем, кто поделится любыми соображениями на эту тему.

Насчет переноса поля role в таблицу user думал, но нехочется так как уже написано довольно много кода под такую структуру БД. Но если ничего не получится наверное придется так сделать. = ( 

Заранее благодарен...

Это сообщение отредактировал(а) phpWarm - 4.12.2007, 16:59
PM MAIL   Вверх
capitan
Дата 5.12.2007, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: нет
Всего: 13



Судя по всему должна быть ещё одна таблица, которая связывает эти две. Если её нет, тогда вообще непонятно, зачем нужно было делить одну таблицу на две.
PM MAIL WWW ICQ   Вверх
skyboy
Дата 5.12.2007, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



Код

SELECT `u0`.`secname`
FROM `user` `u0`
WHERE `u0`.`id_auth` = 0
UNION ALL
SELECT `u1`.`secname`
FROM `user` `u1`
INNER JOIN `auth` `a0`
ON `u1`.`id_auth` = `a0`.`id_auth`
WHERE `a0`.`role` =  'reg_user'

PM MAIL   Вверх
Akina
Дата 5.12.2007, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Цитата(phpWarm @  4.12.2007,  17:57 Найти цитируемый пост)
либо пользователями с аутентификацией либо пользователями без аутентификации

А третий вариант есть? если нет - то получается, что просто всех пользователей, имеющихся в обеих таблицах?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.