|
|
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Ребяты, доброго всем времени суток! Очень надеюсь на вашу помощь. Вопросик вроде не сложный, но что-то как-то меня подклинило Есть таблица: Код: plaintext 1. 2. 3. 4. 5. 6. Есть запрос: Код: plaintext Код: plaintext 1. 2. А мне нужны для прочих полей (name, date) первые значения из группы: Код: plaintext 1. 2. кажется все правильно сформулировал. надеюсь на вашу помощь. причем все это хочется сделать в одном запросе, как это делать с двумя я знаю. Заранее благодарен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 09:35 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
kms_[/CSV] А мне нужны для прочих полей (name, date) первые значения из группы: Код: plaintext 1. 2. кажется все правильно сформулировал. надеюсь на вашу помощь. причем все это хочется сделать в одном запросе, как это делать с двумя я знаю. Заранее благодарен. "Первое" - по какому критерию? Что вы называете "первое значение" для поля Name ? Чего вы ожидаете получить? Ваш запрос, кстати, не должен работать (не хватает запятой). Ну попробуйте, например так: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 10:03 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Алексей, отсутствие запятой я и сам заметил, но полинился исправить, надеясь, что меня поймут, а вот в остальном вы правы, я, действительно, не достаточно четко описал проблемку. Первой я считаю ту строку, у которой более ранняя дата, то есть мне надо получить минимальное значение поля date (без проблем с помощью MIN) и соотвествующее ему значение поля name (а вот тут уже проблемы) так как нет никакого обособленного критерия для поля name!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 10:45 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
kms_... А мне нужны для прочих полей (name, date) ... В SQL нет понятия первая запись и твой запрос вообще работать не будет в стандартном SQL. Фокс (до версии 8.0) позволяет тебе выполнить такой запрос считая что все значения этих одинаковые при заданном уровне группировки. Например если это значения дочернего справочника, по id которого все группируется. Твою выборку можно делать только scan`ом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 10:45 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
kms_ Первой я считаю ту строку, у которой более ранняя дата, то есть мне надо получить минимальное значение поля date (без проблем с помощью MIN) и соотвествующее ему значение поля name (а вот тут уже проблемы) так как нет никакого обособленного критерия для поля name!!! Но если вы не знаете критерия выборки "ПЕРВОГО" значения по полю Name, то компьютер и тем более его не знает. Если нет связи между Kod и Name, то задача не имеет решение или семантика запроса не верна. Поясните, что означает поля Kod и Name (да и дата). С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 11:16 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Алексей, есть таблица в которой хранятся данные о поступлении основного средства, о его ремонтах и произведенных модернизациях. Соответственно запись о вводе основного средства всегда будет иметь более раннюю дату, чем проведенные ремонты и модернизации и соответственно физически в таблице будут расположены всегда выше, так как введены в таблицу раньше(именно такую табличку я и привел в примере). Теперь далее, мне необходимо собрать общую сумму затрат по объекту, то есть сумму его приобретения и всех прочих ремонтов, Если я делаю это тем селектом, который я привел в примере, то сумму он выдает, а остальные позиции, по которым не использована функция суммирования соответствуют строке, которая физически в исходной таблицы в рамках группы является последней, то есть получается, что на экране появляется табличка в которой указана общая сумма, а вместо названия самого объекта написано что-то типа "Капитальный ремонт энергоблока №12" и дата стоит этого самого капитального ремонта. И если дату я могу выбрать дату по условию МИН(), то название мне нужно то, которое соответствует минимальной дате, то есть название самого объекта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 12:24 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
kms_ Первой я считаю ту строку, у которой более ранняя дата, то есть мне надо получить минимальное значение поля date (без проблем с помощью MIN) и соотвествующее ему значение поля name (а вот тут уже проблемы) так как нет никакого обособленного критерия для поля name!!! Если условие такое то в два запроса Код: plaintext 1. 2. Только одно но: если есть две записи с одинаковыми kod, date и разными name выбирутся обе строки. Правда такое событие в постановке не значится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 12:27 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
kms_Алексей, есть таблица в которой хранятся данные о поступлении основного средства, о его ремонтах и произведенных модернизациях. Соответственно запись о вводе основного средства всегда будет иметь более раннюю дату, чем проведенные ремонты и модернизации и соответственно физически в таблице будут расположены всегда выше, так как введены в таблицу раньше(именно такую табличку я и привел в примере). Теперь далее, мне необходимо собрать общую сумму затрат по объекту, то есть сумму его приобретения и всех прочих ремонтов, Если я делаю это тем селектом, который я привел в примере, то сумму он выдает, а остальные позиции, по которым не использована функция суммирования соответствуют строке, которая физически в исходной таблицы в рамках группы является последней, то есть получается, что на экране появляется табличка в которой указана общая сумма, а вместо названия самого объекта написано что-то типа "Капитальный ремонт энергоблока №12" и дата стоит этого самого капитального ремонта. И если дату я могу выбрать дату по условию МИН(), то название мне нужно то, которое соответствует минимальной дате, то есть название самого объекта. Какое смысл имеет поле KOD ? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 12:30 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Это инвентарный номер объекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 12:40 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Привет Kms! выдает значение из последней строки группы Сам же и ответил, как выбрать то, что тебе необходимо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 12:46 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Привет, Valeryka! Возможно, вы меня знаете лучше чем я сам , но чесное слово я не понимаю, как это я сам же ответил на то, что мне необходимо! А вообще, спасибо за участие! ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 12:51 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Надеюсь order by еще имеет какое-то значение в SQL Так и выбери в первом запросе тот порядок который тебя устроит, а во втором группируй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 12:58 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Valeryka, то что вы пишите - это конечно замечательно, но есть одно но: в самом начале я писал: kms_причем все это хочется сделать в одном запросе, как это делать с двумя я знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 13:02 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
kms_Это инвентарный номер объекта Тогда почему один и тот-же и инвентарный номер имеют РАЗНЫЕ объекты? Или я не правильно понял значение поля Name? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 13:12 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
потому что это не основная таблица, а таблица, которая хранит информацию о движении, то есть всякие там увеличения стоимости, списания внутренние перемещения и т.д. Конечно, я понимаю, что можно взять из основной таблицы инвентарный и наименование, а сумму уже из движения, но тем не менее, раз уж проблемка, появилась, то было интересно найти решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 13:16 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
kms_потому что это не основная таблица, а таблица, которая хранит информацию о движении, то есть всякие там увеличения стоимости, списания внутренние перемещения и т.д. Конечно, я понимаю, что можно взять из основной таблицы инвентарный и наименование, а сумму уже из движения, но тем не менее, раз уж проблемка, появилась, то было интересно найти решение. Тогда не понятно, что за таблица, структура которой вы привели в первом своем собщении ? Какова семантика поля Name ? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 13:24 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Желание в одном - это связано с религией ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 13:35 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Алексей, раз уж "пошла такая пьянка" , то конкретнее: Есть таблица: oss, в ней хранится актуальный реестр основных средств со всеми необходимыми данными. Есть еще одна табличка: oss_dv, в ней хранятся все "движения" (поступления, списания и т.д.) Когда предприятие приобретает объект ОС, то ни в первой ни во второй таблице его нет. Оператор заполняет карточку учета ОС и объект попадает и в первую таблицу и во вторую, естественно дата ввода соответствующая, названия одинаковые (все одинаковое в двух таблицах), но в таблице с движением указан соответствующий код операции (например 42-приобретение ОС). Предположим через 5 лет этот объект подвергается модернизации, по завершении которой составляется соответствующий акт, и сумма затрат на модернизацию относится на увеличение стоимости основного средства. Тогда при проведении этой операции в программе, в таблицу oss_dv заносится запись, где указывается инвентарный номер объекта, дата проведения операции (дата ввода) и сумма, а название пишется таким образом, чтобы было понятно, что это не сам объект, а его модернизация " Модернизация энергоблока №12". В таблице же oss по соответствующему инвентарному номеру увеличивается первоначальная стоимость на сумму модернизации. Вот и получается, что в таблице Oss_dv будет уже две записи с одним и тем же номером, но каждая несет свою информацию, одна содержит информацию о первоначальном приобретении объекта, а другая о его модернизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 13:44 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Valeryka, уважаю ваш юмор , но иногда из таких "связей с религией" выходят очень дельные вещи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 13:46 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Охота пуще неволи Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 14:15 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Вот теперь все понятно. У вас есть карточка основного средства ОС (KOD - его уникальный идентификатор). Есть документы изменения состояния ОС (постановка на учет, ремонт, модернизация и пр.), которые имеют наименование (Name), дату (Date) и сумму операции (Suma) Т.е. вам нужна сумма всех операци c данным ОС, но с выводом наименования и даты самой последней (по дате) операции. В этом случае можно так (Для T-SQL и VFP 9.0): Таблица oss (Kod, ....) - основные средства Таблица oss_dv (Name, Kod, Date, Suma, ....) - операции с ОС Код: plaintext 1. 2. С уважением, Алексей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 14:46 |
|
||
|
Sql-запрос?
|
|||
|---|---|---|---|
|
#18+
Да, в конце, конечно, должен быть ...GROUP BY oss.Kod и, если надо, сортировка - ORDER BY oss.Kod Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2006, 14:58 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33497234&tid=1592546]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
156ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 452ms |

| 0 / 0 |
