|
|
|
Выборка из таблицы истории
|
|||
|---|---|---|---|
|
#18+
Имеется таблица истории результатов проверки инструмента: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Таблица отсортирована по KOD_INSTRUMENTA + DATA_PROVERKI Необходимо получить таблицу последних(текущих) результатов. (В исходной таблице они выделены красным цветом.) Т.е. по каждому из инструментов выбрать запись с максимальной датой. Для данного примера результат получается следующий: Код: plaintext 1. 2. 3. 4. 5. Задача кажется тривиальной, но ума не приложу, как написать подобный запрос . DISTINCT не получается, так как выборка происходит по одному полю (код инструмента), а в ORDER BY - два (код инструмента и дата проверки) GROUP BY тоже не помогает, так как требуются значения ВСЕХ полей таблицы, даже, если они не ключевые (например REZULTAT) Буду очень признателен за любую помощь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2008, 01:45 |
|
||
|
Выборка из таблицы истории
|
|||
|---|---|---|---|
|
#18+
Какое отношение имеет вопрос к проектированию БД ? Такие вопросы надо задавать в форуме профильной СУБД. Навскидку Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2008, 03:56 |
|
||
|
Выборка из таблицы истории
|
|||
|---|---|---|---|
|
#18+
ChA, огромное спасибо за Ваши решения!!! Я уже попробовал второй вариант (тот, который с IN) и он работает на моей СУБД. А вопрос задал в теме "Проектирование БД" потому, что не был уверен, что подобный запрос может быть разработан в принципе. К тому-же, хотелось какого-либо стандартного решения, поддерживаемого большинством СУБД. Ваши примеры, определённо, будут полезны и другим членам сообщества, ведь к задаче выборки текущего состояния из файла истории могут приводить различные ситуации в реальных системах. Еще раз, большое спасибо, ChA! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.09.2008, 10:34 |
|
||
|
Выборка из таблицы истории
|
|||
|---|---|---|---|
|
#18+
kordaТаблица отсортирована по KOD_INSTRUMENTA + DATA_PROVERKI Услышав эту фразу, вменяемый преподаватель выше тройки уже не поставит. kordaЗадача кажется тривиальной, Да и является. kordaА вопрос задал в теме "Проектирование БД" потому, что не был уверен, что подобный запрос может быть разработан в принципе. kordaК тому-же, хотелось какого-либо стандартного решения, поддерживаемого большинством СУБД. Произносите эти слова каждый раз, когда хотите, чтобы Вас перестали считать вменяемым разработчиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2008, 16:26 |
|
||
|
Выборка из таблицы истории
|
|||
|---|---|---|---|
|
#18+
kordaТаблица отсортирована по KOD_INSTRUMENTA + DATA_PROVERKI softwarerУслышав эту фразу, вменяемый преподаватель выше тройки уже не поставит. Я бы себе и тройки не поставил. Увы, мои знания SQL более чем посредственные. kordaЗадача кажется тривиальной, softwarerДа и является. Судя по тому, с какой скоростью мне ответили (ночью спросил, утром уже был ответ) и то, что найдено сразу три варианта решения, плюс Ваш комментарий, убеждает меня в том, что скорее всего так оно и есть. "Скорее всего", - потому что я могу ошибаться в своих суждениях. kordaА вопрос задал в теме "Проектирование БД" потому, что не был уверен, что подобный запрос может быть разработан в принципе. softwarer Однажды к нам в класс пришла учительница химии, работавшая до этого в школе для трудных подростков. Было забавно, как уже только за знание формуы соляной кислоты можно было получить пятерку. Вобщем, уровень - понятие относительное. То, что для одного тривиально, для другого может быть просто невыполнимой задачей. kordaК тому-же, хотелось какого-либо стандартного решения, поддерживаемого большинством СУБД. softwarerПроизносите эти слова каждый раз, когда хотите, чтобы Вас перестали считать вменяемым разработчиком. Если честно, я себя не считаю вменяемым разработчиком. Ну делаю программы на каком-то там уровне, ну некоторые из них работают, опять-же, на каком-то уровне. Так многие делают... Но профессионализм (под словом "вменяемость" Вы подразумеваете профессионализм, правильно?) - совсем не в этом. Вобщем, до профессионала мне - как до Луны пешком. Уважаемый softwarer, Вы могли бы расскрыть смысл замечаний по моим фразам: kordaТаблица отсортирована по KOD_INSTRUMENTA + DATA_PROVERKI Вы имели ввиду, что таблица - понятие абстрактное и бессмысленно говорить о её внутреннем представлении, так как оно является внутренним делом конкретного сервера, а когда мы имеем дело с запросами, то подразумеваем, что не таблица отсортирована, а результат запроса мы получаем в отсортированном виде. Это Вы имели ввиду? kordaК тому-же, хотелось какого-либо стандартного решения, поддерживаемого большинством СУБД. softwarerПроизносите эти слова каждый раз, когда хотите, чтобы Вас перестали считать вменяемым разработчиком. А здесь что не так? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.09.2008, 00:43 |
|
||
|
Выборка из таблицы истории
|
|||
|---|---|---|---|
|
#18+
korda kordaК тому-же, хотелось какого-либо стандартного решения, поддерживаемого большинством СУБД. softwarerПроизносите эти слова каждый раз, когда хотите, чтобы Вас перестали считать вменяемым разработчиком. А здесь что не так? :) Нужно уметь использовать возможности конкретной субд, особенно если за нее заплатили деньги. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2008, 14:45 |
|
||
|
Выборка из таблицы истории
|
|||
|---|---|---|---|
|
#18+
В Oracle самый быстрый результат даст, при наличии индекса по KOD_INSTRUMENTA: SELECT KOD_INSTRUMENTA, DATA_PROVERKI, REZULTAT FROM ( SELECT KOD_INSTRUMENTA, DATA_PROVERKI, REZULTAT , MAX(DATA_PROVERKI) OVER(PARTITION BY KOD_INSTRUMENTA) AS MaxDate FROM YourTbl ) t1 Where DATA_PROVERKI = MaxDate - это к слову о специфике БД. Вообще, OLAP - это сила! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.10.2008, 10:39 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35565713&tid=1543619]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
214ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 239ms |
| total: | 569ms |

| 0 / 0 |
