منزل
Top.Mail.Ru Yandeks.Metrika
المنتدى: "القواعد";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

إلى

مرحبا الجميع! أنا أصنع مجلة. أين المهمة ... البحث عن فروع مماثلة


@andrew   (2001-12-04 11:38) [0]

... تحتاج إلى التحقق من تفرد التاريخ الذي تم إدخاله. بحيث في الوقت نفسه لا يوجد حدثان. لا تقل لي كيف أقود هذا الاختيار إلى مُنشئ الجدول أو الاستعلام قبل السطر "insert to ....."؟ شكرا لك



Val   (2001-12-04 13:11) [1]

ليست هناك حاجة إلى التحقق ، ولكن فهرس فريد من نوعه ، والذي سوف يشمل هذا الحقل التاريخ



@andrew   (2001-12-04 13:58) [2]

А это как: "в который будет входить поле даты"? Имеется ввиду, что поле "дата" уникально? Если это имеется ввиду, то это не совсем годится, т.к. на самом деле, интересует чтобы временные интервалы события не пересекались. Напр. одно событие с 5 до 8 утра. Другое - с 6 до 7. Если делать проверку по уникальности индекса, то SQL позволит сделать запись, а не должен.



@andrew   (2001-12-04 14:05) [3]

На самом деле, можно придумать несколько алгаритмов решения моей задачи. Самый элементарный, который у меня в голове крутится, а именно: сначала возвращать все значения, потом перебирать их, смотреть... и т.д. - очень длинный и тормозной. Может просто кто-нибудь сталкивался и знает какое-нибудь готовое решение моего вопроса: быстрое и простое и все-таки, желательно, не на уровне софта, а на уровне SQL или запроса SQL, т.к. в варианте решения вопроса на уровне софта при работе сразу большого кол-ва пользователей задержка во времени "select * ...; проверка.....; если все в порядке-insert что-то...." может оказаться роковой.

Еще раз заранее Спасибо!



Mick   (2001-12-04 14:07) [4]

بشكل عام ، تتم كتابة المجلات العادية بالتتابع. لم يتم إدراج التاريخ من قبل العميل ، ولكن بواسطة الخادم. إذا بدأت عملية معينة في 5 ، ولكنها انتهت في 8 ، فستحتوي المجلة على سجل 1 من البداية (5 في الصباح) ، وسجل واحد في النهاية (8 من الصباح) ومجموعة من السجلات بينهما والتي ستخبرك بما حدث في ذلك الوقت.



Nest   (2001-12-04 14:14) [5]

Да, вчера у меня тоже такой вопрос встал.
Но я пока отложил его решение - есть поважнее дела.
А вообще я думаю, у тебя период должен характеризоваться 2мя параметрами-
дата_время_начала и дата_время_конца.
Так вот если в каждый момент времени может происходить только олно событие, то при вводе нужно проверять,чтобы :
[1.дата_время_начала<дата_время_конца]
2.Несуществует записи,у которой дата_время_конца пусто либо больше вводимого дата_время_начала.

Наверное эти мысли надо до ума довести - небыло времени.Пока только смутная идея.
Покатит?



@andrew   (2001-12-04 14:17) [6]

>Mick
Не совсем то.
Речь идет не о журнале в компьютерном смысле слова, а о журнале, как об органайзере, ежедневнике, в который можно записать некие планы на будующее время.



@andrew   (2001-12-04 14:24) [7]

> عش
Ну да, в принципе идея ясна. Но это софтверный способ решения. Т.е. грубо говоря, перед тем, как я хочу что-то записать я делаю:
1. Возвращаю все записи, сортируя их по дате_времени.
2. Становлюсь на последнюю строку (Query1.Last)
3. Если время начала того, что я хочу вставить >= время конца последней записи, то можно сделать Insert.
А можно ли тоже самое, только не софтом, а запросом?

Я просто боюсь, что при одновременной работе нескольких людей можно облажаться.



Nest   (2001-12-04 14:36) [8]

А что так не покатит?
1.Query1: Select max(ДВК)
2.If query1.fields[0].asdatetime>ДВН_вводимое then abort

Чтобы сделать и проверку и вставку одним запросом, надо, IMHO, нехило изъ№%@ться. А парой - несложно.



Nest   (2001-12-04 14:38) [9]

Может и можно - просто посидеть подумать над элементарной логикой,и как представить это в WHERE запроса.
Я идею дал - дальше попытайся подумать. У меня просто реально времени нет.



Mick   (2001-12-04 14:39) [10]

Можно пойти по пути денормализации таблицы журнала.
Структура:
1.Поле ключа (любой искусственный Primary Key)
2.Дата
3 Поля часов (по количеству часов в сутках)

المقبل:
Клиент проверяет непрерывность вставляемого интервала (легко)
Триггер в таблице проверяет есть ли NOT NULL значения в одноименных полях в записях для такой же даты.
Если есть, значит поймали перекрытие событий, если нет - все нормально.



Sam   (2001-12-04 19:27) [11]

А как насчет триггеров?



kaif   (2001-12-04 20:17) [12]

قبل عامين ، قمت بحل هذه المهمة الدقيقة لتنظيم موعد مع الأطباء. فعلت على InterBase. الخوارزمية غير بديهي تمامًا. لكي يعمل هذا بسرعة ، بالطبع ، هناك حاجة إلى فهارس. اضطررت إلى إنشاء فجوات كسجلات منفصلة ؛ والإجراءات المخزنة للفجوات "الساحرة" و "الإلتصاق" كانت مطلوبة. أولاً ، يتم إنشاء "فجوات وقت الفراغ" ، ثم يتم تقسيمها لأنها تستغرق بعض الوقت. وفقا لذلك ، فإن عددهم يتزايد تدريجيا. ترتبط حالات معينة بمؤشر فريد بديل لهذه الفجوات. عملت بسرعة وبشكل متسق مع الوصول المتزامن لعدد من المستخدمين. فكرت كثيرا وحاولت خيارات مختلفة. بدون تحويل الثغرات الفردية إلى كائنات يمكن إنشاؤها وحذفها واستخدامها ، لم أتمكن من العثور على أي حل جيد آخر.



صفحات: 1 فرع كامل

المنتدى: "القواعد";
الأرشيف الحالي: 2002.01.08;
تنزيل: [xml.tar.bz2];

الطابق العلوي









الذاكرة: 0.6 ميغابايت
الوقت: 0.031 ج
1-22018
DelphiG
2001-12-18 01:51
2002.01.08
طباعة النص من مذكرة! لدي شيء خاطئ ....


14-22364
ميرلين
2001-11-06 00:22
2002.01.08
إذا لم تقم بحفظ ، فسوف تختفي!


1-22261
bk
2001-12-17 15:42
2002.01.08
تفوق


1-22040
انتزاع
2001-12-18 18:18
2002.01.08
اختبار المحاذاة في TRichEdit


14-22355
قضمة الصقيع
2001-11-06 12:39
2002.01.08
ترجمة





الأفريكانية الألبانية عربي الأرميني أذربيجان الباسكي البيلاروسية Bulgarian التشيكية الصينية المبسطة) تقاليد صينية) الكرواتية التشيكية دانماركي Dutch أنجليزي الإستونية الفلبينية Finnish جيب
الجاليكية الجورجية الألمانيّة اليونانيّة الكريولية الهايتية اللغة العبرية الهندية الهنغارية أيسلندي Indonesian الأيرلندية Italian اليابانيّة الكوريّة اللاتفية اللتوانية المقدونية الملايو المالطية Norwegian
اللغة الفارسية بولنديّة البرتغاليّة رومانية Russian صربي السلوفاكيّة سلوفيني إسباني السواحيلي Swedish Thai التركية الأوكراني الأردية الفيتنامية ويلزي اليديشية البنغالي البوسنية
السيبيونو الاسبرانتو الغوجاراتية الهوسا همونغ الإيبو جاوي الكانادا الخمير لاو لاتينية الماوري المهاراتية المنغولية النيبالية البنجابية الصومالية التاميل التيلجو اليوروبا
زولو
Английский Французский ألماني Итальянский البرتغالية Русский Испанский