Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.129.19.251] |
|
Данный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ. |
Сообщ.
#1
,
|
|
|
Здравствуйте, Господа!
Есть 2 таблицы: USERS Id uname UGROUP group_id user_id В таблице ugroup один id пользователя может быть в нескольких группах. Мне нужно вывести всех пользователей из users кроме тех, что присутствуют в группе. Например: group_Id = 1.Те должны быть выведены все пользователи, кроме тех, которые присутствуют в группе 1. Заранее спасибо! PS я с джонами запутался |
Сообщ.
#2
,
|
|
|
SELECT u.ID, u.uname FROM users u LEFT JOIN ugroup g ON u.id = g.user_id AND g.groupID = 1 WHERE ISNULL(g.userID ) = 1 |
Сообщ.
#3
,
|
|
|
MIF, спасибо большое! Сегодня попозже проверю, тогда и закрою вопрос.
А, вообще, сокращение не должно превращаться в кастрацию |
Сообщ.
#4
,
|
|
|
MIF, все, практически, как мне нужно, но...
Если в таблице ugroup нет упоминаний о некоторой группе, например: ugroup.group_id = 232, то должен выводиться весь список пользователей, а по данному запросу выдает пустой список. Как это поправить? В ugroup может и не быть какой-то группы. Это не основная таблица групп, а вспомогательная, в которой группам сопоставляются пользователи. Т.е. если запрос ссылается на неизвестный ugroup.group_id, то должен выводиться весь список пользователей. Добавлено SELECT users.id, users.uname FROM users LEFT JOIN ugroup ON users.id = ugroup.user_id AND ugroup.group_id =1 WHERE ugroup.user_id IS NULL Вроде, так получается как мне нужно. Если ugroup.group_id ссылается на значение, которого еще нет, то выводится весь список users. Если ugroup.group_id ссылается на имеющиеся значения, то выводятся только те users, которые отсутствуют в нужной группе. Вроде, я этот запрос с разными значениями и результат меня устраивает, вот только... Грамотно ли он составлен? Не "зарыл" ли я в нем логическую ошибку, которая вылезет впоследствии? |
Сообщ.
#5
,
|
|
|
Цитата MIF @ SELECT u.ID, u.uname FROM users u LEFT JOIN ugroup g ON u.id = g.user_id AND g.groupID = 1 WHERE ISNULL(g.userID ) = 1 Это не коммерческий код. Читайте GoF. |