Не могу построить нестандартный SQL запрос
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Не могу построить нестандартный 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.
|
|
|
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;
|
|
|
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 больше в этой таблице встречатся не будут нивкакой комбинации.
|
|
|
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 без всяких условий, даже если есть дубликаты.
|
|
|
|
|