wmmail.ru – cервис почтовых рассылок на главную
написать письмо
карта сайта

С чего начать?РекламодательПравилаFAQСтатистикаБиржа статейTOP100ФоткиКонтакты
Логин:
Пароль: 
Регистрация   Забыли пароль?
WMLogin
Пользователей всего:

542596

Пользователей сегодня:

86

Пользователей online:

142

Выплачено ($): 7`602`661,58
Выплат: 8`111`850
Писем прочитано: 1`024`932`850

 
 
Online 0
Все ответы
 
 

Вопрос #35604

Внимание! В разделе вопрос-ответ запрещается:

  • Мат, оскорбления, флуд, реклама
  • Сообщения, не являющиеся вопросами/ответами
  • Нарушение законодательства РФ
  • Попрошайничество в любой форме

Выделите текст и нажмите для цитирования  #  
+2   [08.10.2011 12:10] #831226

Закрытый вопрос от пользователя Transact SQL

Есть таблица:

contract Договоры
------------
id int идентификатор договора, первичный ключ
type_id int тип договора, внешний ключ
id_client int клиент, внешний ключ
id_bank int банк, внешний ключ
stat int статус договора (0 - действующий, 1 - недействующий)
name varchar(30) номер договора

---------------------------------------------------------------------------------

Нужно написать запрос, возвращающий список открытых договоров, пронумерованных по порядку (1,2,3,... без пропусков номеров) для каждого банка. Эти номера не содержатся в таблице, т.е. должны быть вычисляемым полем. Т.е., №№ 1,2,3, ..., N для банка A, 1,2,3, ..., N для банка B, и т.д.
Рейт
150
Не знаю SQL
22
Когда-то изучал, но не в курсе
12
Знаю, как помочь, ответ ниже
35
Раздел: Программирование, проголосовало: 219, последний комментарий: 09.10.2011 14:00
Вопрос закрыт пользователем MiSsiS_IA
Проголосовали: parketholl, #876907, Yulenoza, ananda

Ответы
Ответов всего: 7  вопрос закрыт 
Выделите текст и нажмите для цитирования  #  
+2   [08.10.2011 12:42] myAnuri Рейтинг 0.00     Стена пользователя myAnuri +40  Все ответы пользователя myAnuri

SELECT id, id_bank FROM contract WHERE stat=0


По идее делается так, а дальше уже обрабатывать полученный результат. На сколько я могу себе представить, это вполне решается с помощью циклов.
Проголосовали: pro100serik_96, ananda
Выделите текст и нажмите для цитирования  #  
+1   [08.10.2011 14:49] #103207   Все ответы пользователя

#831226 пишет Нужно написать запрос, возвращающий список открытых договоров, пронумерованных по порядку (1,2,3,... без пропусков номеров) для каждого банка. Эти номера не содержатся в таблице, т.е. должны быть вычисляемым полем. Т.е., №№ 1,2,3, ..., N для банка A, 1,2,3, ..., N для банка B, и т.д.

Это делается в лучшем случае несколькими запросами!
1. Получаешь список уникальных id_bank с действующим договором.
2. По циклу получаешь из базы id идентификаторы договоров для каждого банка (полученного в пункте 1), При этом записи уже будут идти по порядку!!!
Проголосовали: ananda
Выделите текст и нажмите для цитирования  #  
+1   [08.10.2011 16:05] #831226   Все ответы пользователя

Вся проблема сводится как раз к тому, что это тестовое задание, и требуется решить задачу одним SELECT-запросом (разрешается использование вложенных под-запросов).
Проголосовали: ananda
Выделите текст и нажмите для цитирования  #  
+1   [09.10.2011 00:57] myAnuri Рейтинг 0.00     Стена пользователя myAnuri +40  Все ответы пользователя myAnuri

#831226 пишет Вся проблема сводится как раз к тому, что это тестовое задание, и требуется решить задачу одним SELECT-запросом

А мой вариант чем не устраивает?
Проголосовали: ananda
Выделите текст и нажмите для цитирования  #  
+1   [09.10.2011 01:35] #103207   Все ответы пользователя

#831226 пишет это тестовое задание, и требуется решить задачу одним SELECT-запросом (разрешается использование вложенных под-запросов).

Интересный был тест, спс, я его прошел :smile:
как раз получилось одним запросом :thumbsup:
Подсказка; используй переменные для нумерации по порядку и сортировку по id_bank

myAnuri пишет А мой вариант чем не устраивает?

Ы нумерации нет!
Проголосовали: ananda
Выделите текст и нажмите для цитирования  #  
+1   [09.10.2011 08:05] #831226   Все ответы пользователя

#103207 пишет Интересный был тест, спс, я его прошел :smile:
как раз получилось одним запросом :thumbsup:
Подсказка; используй переменные для нумерации по порядку и сортировку по id_bank
Буду очень благодарен, если подскажете этот самый запрос :smile:
Проголосовали: ananda
Выделите текст и нажмите для цитирования  #  
+1   [09.10.2011 14:00] #103207   Все ответы пользователя

#831226 пишет Буду очень благодарен, если подскажете этот самый запрос

Лучше отблагодарить 1000 Cr. :thumbsup:

SELECT
*,
IF(@id_bank <> `id_bank`, @num := 1, @num := @num + 1) AS `num`,
@id_bank := `id_bank` AS `temp2`
FROM
`contract`,
(SELECT @id_bank := -1 AS `temp1`) AS `temp`
WHERE
`stat` = 0
ORDER BY
`id_bank`
Проголосовали: ananda

Видеоурок

Вопрос-ответ

НОВОСТИ
21.02.2024QIWI
подробнее>>
31.12.2023С Новым 2024 Годом!
подробнее>>

© 2004-2024 «WMMAIL» Пользовательское соглашение