Добро пожаловать! Это — архивная версия форумов на «Хакер.Ru». Она работает в режиме read-only.
 

Не могу построить нестандартный SQL запрос

Пользователи, просматривающие топик: none

Зашли как: Guest
Все форумы >> [Прочее] >> Не могу построить нестандартный SQL запрос
Имя
Сообщение << Старые топики   Новые топики >>
Не могу построить нестандартный SQL запрос - 2009-07-03 17:49:43.410000   
Agent Smith

Сообщений: 976
Оценки: 0
Присоединился: 2007-04-10 21:56:49.593333

Есть 2 таблицы.
1 таблица - Profiles (поля: ID, login, sex, name ….)
2 таблица - Couples (поля: ID, Paar, Check)
|————————-|
|__ID__|__Paar__|_Check_|
|   45   |    1       |    0     |
|   15   |     98    |    1      |
|__1___|____2___|__0____|

ID и Paar  соответствуют полю ID из Таблицы Profiles, то есть фактически это юзеры. Check - это состояние двух соответственных юзеров, то есть юзер 45 и юзер 1 ещё не пара, но хотят стать парой, юзер 1 также хочет стать парой юзеру 2. Юзер  15 и юзер  98 уже пара. Остальные юзеры, которых нету в данной таблице и которые есть в таблице Profiles не являются парой и не желают быть парой.
Нужно построить SQL запрос, который бы вынимал из таблицы Profiles только тех юзеров, которые не являются в паре с кем-то, то есть в данном примере, нужно все юзеры, кроме 15 и 98.
Post #: 1
RE: Не могу построить нестандартный SQL запрос - 2009-07-04 14:46:13.976666   
horiz

Сообщений: 892
Оценки: 0
Присоединился: 2008-11-03 18:33:09.006666
Вопрос. Для юзера 15 указано что он пара с юзером 98. А будет ли такая же запись для юзера 98? То есть:
+------+--------+-------+ | ID | Paar | Check | +------+--------+-------+ | 98 | 15 | 1 | +------+--------+-------+
Если да, то все просто:
SQL>SELECT Profiles.* FROM Profiles,Couples WHERE Profiles.ID=Couples.ID AND Couples.Check=0;
Post #: 2
RE: Не могу построить нестандартный SQL запрос - 2009-07-06 11:33:16.480000   
Agent Smith

Сообщений: 976
Оценки: 0
Присоединился: 2007-04-10 21:56:49.593333
quote:

ORIGINAL: horiz

Вопрос. Для юзера 15 указано что он пара с юзером 98. А будет ли такая же запись для юзера 98?

Если в строке Check стоит 1, то юзеры 98 и 15 больше в этой таблице встречатся не будут нивкакой комбинации.
Post #: 3
RE: Не могу построить нестандартный SQL запрос - 2009-08-03 14:25:15.450000   
xxxGradxxx

Сообщений: 40
Оценки: 0
Присоединился: 2007-02-24 01:22:33.600000
(SELECT * FROM Profiles)
EXCEPT
(SELECT p.*
FROM Profiles p
WHERE p.ID IN (SELECT id FROM Couples WHERE check=1 GROUP BY(id)) OR p.id IN (SELECT paar FROM Couples WHERE check=1 GROUP BY (id))
GROUP BY (p.*) )

P.S без всяких условий, даже если есть дубликаты.
Post #: 4
Страниц:  [1]
Все форумы >> [Прочее] >> Не могу построить нестандартный SQL запрос







Связаться:
Вопросы по сайту / xakep@glc.ru

Предупреждение: использование полученных знаний в противозаконных целях преследуется по закону.