|
|
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Очень хотелось бы сделать представление из 2-х таблиц с отношением 1 ко многим, но из подчиненной таблицы нужно брать запись с максимальной датой. Таблица k_job: sh_job , prof. Подчиненная таблица Tar_job: sh_job, data, tarif. Можно это сделать одним запросом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 17:00 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 17:05 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Спасибо, получилось. Я новичек в VFoxPro, поэтому заранее прошу прощения за глупые вопросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.05.2005, 17:31 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Простите, не получилось. Дата то берется максимальная, а тариф какой попало. А надо тариф брать из той записи, где дата максимальная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 16:46 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
такая вот .... байда OPEN DATEBASES <DataBaseName> CREATE SQL VIEW lvLastDate as ; select k_job.sh_job,k_job.prof,Tar_job.data,Tar_job.tarif from k_job left join Tar_job on Tar_job.sh_job=k_job.sh_job where str(k_job.sh_job,6)+dtos(Tar_job.data) in (select max(str(k_job.sh_job,6)+dtos(Tar_job.data)) from Tar_job group by k_job.sh_job) правда не проверял так что за базар не отвечаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 17:10 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 17:48 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
2Анатолий Широков счастливый и беззаботный обладатель девятки или я не прав ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 17:55 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Я тут недавно и ваших приколов не знаю. Но что-то похожее на правду. Пока спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 18:09 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
2 leaf Отчего же и на 5-ке этот запрос идет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 18:16 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Я тут недавно и ваших приколов не знаю. Но что-то похожее на правду. Пока спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 18:34 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Маленькое уточнение. Приведенные примеры будут работать корректно только в случае если нет нескольких записей с максимальным значением даты для одного и того же значение sh_job. В противном случае будут выбраны из подчиненной таблицы все записи с этим максимальным значением. Впрочем, возможно, именно это и надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.05.2005, 23:03 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Hi Анатолий! Идти то идёт, но медленно - а вот в 9-ке улучшили движок, и теперь такие запросы реально оптимизируются - т.е. НЕ происходит тупого исполнения подзапроса на каждую запись основного запроса. По сути он преобразуется в хитрый JOIN... Posted via ActualForum NNTP Server 1.2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 02:41 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
2Igor Korolyov да согласен примерно это я и имел ввиду 2ВладимирМ формально Вы как всегда правы , но фактически это будет свидетельствовать о некорректной работе программиста. Почему? Ответ - нормализация . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 11:13 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Еще раз простите за безграмотность. Что значит нормализация? Это не давать на один шифр вводить одинаковые даты? Но у меня так оно и предполагается. Или что-то еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 11:48 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
есть несколько принципов нормализации реляционных таблиц большинство из них не только бесполезны но даже в некоторых случаях вредны , типа как пиво по утрам Так вот один из них не помню какай по счету говорит об однозначности связи между таблицами (моё вольное изложение) и там дальше Короче если у Вас на одну дату две тарифные ставки Вам нужно ввести еще какой-то доплнительный признак время например вместо даты. Иначе будет бардак и несоответсвие. Но к счастью у вас не так. Я рад что я в Вас не ошибся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:02 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Грубо говоря, в таблице не должно быть двух одинаковых записей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:04 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
И на этом спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:14 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
И на этом спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:17 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
А как посоветуете организовать эту самую нормализацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 12:47 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
k_svА как посоветуете организовать эту самую нормализацию? Нормализация - это идеология. Примерно такая же как Объектоно-ориентированное программирование (ООП). Поэтому "организовать" ее невозможно. Если опустить все высокоумные термины, то идея нормализации заключается в том, что любые данные должны вводиться только один раз и храниться только в одном месте. Ну, например, в твоем случае нужна информация по 3 критериям: дата, работа, тариф. Можно вводить это все в одной таблице (как, например в листе EXCEL), но такая таблица будет НЕ нормализована именно потому, что одно и то же значение ты вынужден будешь вводить несколько раз. Много раз вводить одну и ту же "работу", много раз вводить один и тот же "тариф". Под "нормализацией" в данном случае понимается разделение информации по таблицам таким образом, чтобы отпала необходимость ввода повторяющихся значений. (есть еще "логическая" нормализация, но это более глубокие "дебри") Это значит, что надо организовать отдельный справочник "работ" и отдельный справочник "тарифов". А в сводной таблице ты будет выбирать ранее введенную "работу" и ранее введенный "тариф". Но идея "нормализации", как впрочем и любая другая идея, не выдерживает грубой действительности. В том смысле, что нельзя доводить идею до ее логического завершения. Это будет полнейшая бессмыслица. В данном случае ты ведь вынужден вводить повторяющиеся даты, но создавать отдельный справочник "даты" никому и в голову не придет. Т.е., как правило, нормализация базы данных выполняется до некоего предела, глубже которого "не копают". В этом просто нет смысла. Иногда сознательно нарушают правила нормализации, для повышения быстродействия системы. Но такие отступления требуют более тщательного программирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 14:20 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
о это долгий рассказ и не для форума 1.купите книгу по теории баз данных 2.посмотрите практически любую книгу по базам данных они с этого начинаются обычно 3. спросите у ВладимираМ ссылочку может даст если завалялась , у меня такой нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 14:21 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Вот к чему приводят некорректно поставленные вопросы. :(( Я совсем другое хотела спросить. Как нормальные люди это делают: навешивают процедуры на триггеры или правила таблиц (честно говоря, я там особо еще не копалась), либо прямо в форме при вводе записи делать эти проверки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 14:43 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
ну нормальные понятие относительное особенно программисты я например контролирую уникальность по ходу но это не всем нравиться кто-то ставит индексы уникальные которые соответственно ругаются и сопративляются дубляжу кто-то тригера использует по моим наблюдениям индекс чаще используют отсюда проблема генерации нового ИД - отдельный вопрос так что лучше для начала чего-нибудь почитать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 14:51 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
k_svКак нормальные люди это делают: навешивают процедуры на триггеры или правила таблиц (честно говоря, я там особо еще не копалась), либо прямо в форме при вводе записи делать эти проверки? В смысле: как организовать контроль уникальности введенных данных? Контроль на уровне ввода данных - это всегда рекомендательный и не окончательный контроль. Он не обеспечивает реальный контроль, поскольку, по сути, каждый пользователь работает со своей копией данных. А вот контроль на уровне записи данных - это уже окончательный контроль, поскольку он проверят именно исходные данные, а не их копии у пользователей. Организовать его можно 2 принципиальными способами: Индекс типа Candidat с FOR-условием (надо отсекать записи, помеченные как удаленные) Триггер, при наличии структурного индекса по изменяемому полю и записи данных в окружении транзакции. Первый вариант проще в реализации. Второй - универсальнее. Первый вариант также контролирует и процесс ввода данных. Второй - только процесс записи данных. Первый вариант несколько "избыточен" по объему занимаемого места (физически больше места на диске занимает) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 15:04 |
|
||
|
помогите сделать представление
|
|||
|---|---|---|---|
|
#18+
Спасибо за советы. Книжки я все-таки пытаюсь читать. Тут на меня одну навесили конкретную задачу. Не успеваю. Хочется и побыстрее, и чтобы не стыдно было потомкам оставить. Да и на наших программистов никакой надежды. Поэтому вся надежда на ваш сайт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2005, 15:13 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33074111&tid=1594208]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
207ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
| others: | 244ms |
| total: | 555ms |

| 0 / 0 |
