Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [SQL]


Автор: gambit 22.12.2009, 19:58
Есть таблица "contract"
int id
int id_stat // статус договора 1-открыт 0-закрыт
int bank_id
int user_id
int type_id // тип договора
var char(50) name
создать запрос, выводящий  id пользователей не имеющих договора в самом крупном банке ( с максимальным количеством открытых договоров)

Автор: ТоляМБА 22.12.2009, 20:19
gambit, 
1. БД какая? Access, MS-SQL, MySQL, Oracle...
2. Один пользователь может иметь договор только в одном банке или в нескольких?

Автор: gambit 22.12.2009, 20:29
Один пользователь может иметь договор в нескольких банках

Автор: ТоляМБА 22.12.2009, 20:35
gambit, а 1-й ответ? Оракл я не юзал вообще, в Access и MS - TOP, в MySQL - LIMIT то бишь различия есть. Или тебе вообще универсальный запрос надо?

Автор: gambit 22.12.2009, 20:48
ms sql

Автор: ТоляМБА 22.12.2009, 21:01
Код
Select DISTINCT C1.user_id
FROM contract C1
LEFT JOIN
(SELECT DISTINCT C.user_id
FROM contract C
INNER JOIN 
(SELECT TOP 1 Count(contract.bank_id) AS [Count-bank_id], contract.bank_id
FROM contract
WHERE  (((contract.id_stat)=True))
GROUP BY contract.bank_id
ORDER BY 1 DESC) as A
ON C.bank_id=A.bank_id) as B
ON C1.user_id=B.user_id
WHERE B.user_id is null;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)