Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
Недавно начал работать с MS-SQL. Подскажите люди добрые - есть ли в Transact SQL аналог for each структур? Т.е. мне нужно чтобы для каждой записи в одной таблице, находилось поле с максимальной датой в другой таблице и оно возвращалось. Идеально если бы удало создать таким образом view. Не знают ли многоуважаемые специалисты как это здаелать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2001, 06:59 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
Для организации циклов можно использовать только WHILE. А для твоей задачи отдельной таблицы скорее всего не нужно - делается запросом по исходной таблице. Только ты объясни пояснее, с максимальнной датой среди каких дат? Если на одну запись таблицы одна дата, тогда не понятно применение термина "максимиальной". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2001, 07:07 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
2 Максим Вы мыслите категориями ООП, а T-SQL оперирует множествами. В вашем случае будет что-то типа: select t1.*, t2.max(ПолеСДатой) from ОднаТаблица t1, ДругаяТаблица t2 where t1.ID = t2.ID Такого типа запрос возможно и не подойдет Вам, но уж очень общее описание задачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2001, 07:08 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
Задача такая. Есть таблица с клиентами. у каждого клиента есть счет - это ключ. Есть другая таблица со списком операций над счетами по датам. необходимо для каждого клиента по его номеру счета найти запись во второй таблице с максимальной датой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2001, 09:51 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
select t3.* from Клиент t1, Счет t2, Операция t3 where t1.КлиентID = t2.КлиентID and t2.СчетID = t3.СчетID and t3.Дата = (select max(Дата) from Операция where Операция.СчетID = t2.СчетID) Что то типа этого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2001, 10:12 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
Посмотрите ещё в Форуме: был топик о поиске остатка на конкретную дату - Вам пригодится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2001, 19:52 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
Максим как я тебя понял в одной таблице у тебя имена клиентов, а в другой их счета. И в одной и в другой есть ключевое поле идентифицирущее клиентов и в той и в другой таблици. Так? В таком слуции не стоит раздувать слона из мухи. Можно сделать все на много проще. [hr] Построй связь между этими таблицами по полям идентификации клиента, как я понял из твоих слов это будет связь один ко многому (одна запись в таблице клиентов и множество связий в таблици счетов). А потом делать запрос с такиме же критериями как выше уже говорилось, только место WHERE можешь использовать объединение ( inner , left или right join ). Этот подход удобней в том плане что при этом используется объединение на уровне таблици а не запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 00:46 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
Максим как я тебя понял в одной таблице у тебя имена клиентов, а в другой их счета. И в одной и в другой есть ключевое поле идентифицирущее клиентов и в той и в другой таблици. Так? В таком слуции не стоит раздувать слона из мухи. Можно сделать все на много проще. [hr] Построй связь между этими таблицами по полям идентификации клиента, как я понял из твоих слов это будет связь один ко многому (одна запись в таблице клиентов и множество связий в таблици счетов). А потом делать запрос с такиме же критериями как выше уже говорилось, только место WHERE можешь использовать объединение ( inner , left или right join ). Этот подход удобней в том плане что при этом используется объединение на уровне таблици а не запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 00:46 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
Пример: \n Select t1.*, MAX (t2.dates) From t1 Inner Join t2 On t1.id=t2.id Group By t1.* Используй оператор Group by когда используешь итоговые функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 01:04 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
2 Hard 1.Ну и что он получит сообразно условиям задачи? 2.А я, дурак, всю жизнь в SELECT c GROUP BY столбцы перечислял ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.07.2001, 04:41 |
|
||
|
Вопрос по Transact SQL
|
|||
|---|---|---|---|
|
#18+
Насколько я понял Максим иммет ввиду for each .. next из IB database так вот если нужна аналогичная конструкция то можно использовать переменные типа CURSOR пример: DECLARE @f1, @f2 datatype DECLARE cursor1 CURSOR FOR SELECT field1,field2 FROM table1 WHERE fieldN=..... OPEN cursor1 FETCH NEXT FROM cursor1 INTO @f1, @f2 WHILE @@FETCH_STATUS = 0 -- ЧТО-НИБУДЬ FETCH NEXT FROM cursor1 INTO @f1, @f2 END CLOSE cursor1 DEALLOCATE cursor1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2001, 06:08 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3560&tid=1826122]: |
0ms |
get settings: |
12ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
23ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 368ms |

| 0 / 0 |
