Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизПомогите с SQL Найти похожие ветки
← →
Вика (2004-08-13 14:45) [0]Помогите с написанием SQL для решения следующей задачи:
есть постоянная таблица карточек, еженедельно из другой проги с некоторую таблицу выгружатся карточки со полем статуса "USED". Эту самую табличку надо стравнить с постоянной таблицей карточек и поменять у соответствующих карточек статус "AVAILABLE" на "USED" и проставить в поле statuschange дату изменения статуса.
← →
Skyle © (2004-08-13 14:58) [1]Что за БД, имена полей, таблиц в студию...
← →
Квэнди © (2004-08-13 15:00) [2]Поподробней задачу опиши (имеется ввиду среду).. и условия...
Как ето надо сделать? одним запросом или не важно? позволяется ли создание временной таблицы...
← →
Квэнди © (2004-08-13 15:01) [3]Поподробней задачу опиши (имеется ввиду среду).. и условия...
Как ето надо сделать? одним запросом или не важно? позволяется ли создание временной таблицы...
← →
Квэнди © (2004-08-13 15:01) [4]сори
← →
1008 © (2004-08-13 15:02) [5]А данные во второй таблице дублируют постоянную?
← →
Вика (2004-08-13 15:04) [6]2 Skyle ©
Постоянная таблица:
id
seria
status
numSeller
dateStatusChange
Временная таблица все тоже самое, только значения всех полей status = "USED".
← →
Вика (2004-08-13 15:05) [7]Временная таблица это навеоное не совсем правильный я термин употребила, т.е. имелось в ивду таблица, в которую данные загружаются с периодичность раз в неделю. Используется БД MS Access, ADO в Delphi.
← →
1008 © (2004-08-13 15:07) [8]Вика (13.08.04 15:05) [7]
Если статус в постоянной таблице всё-равно будет изменён на USED, то почему бы его сразу не изменять? Тогда отпадёт необходимость переноса.
← →
Skyle © (2004-08-13 15:09) [9]Есть таблица - справочкик (постоянная). Есть некоторая таблица, в которой перечислен список карточек со статусом Used.
Требуется для этого списка в постоянной таблице поставить дату (dateStatusChange) и Status в "Used".
Связь таблиц по ID.
Я правильно понял?
То есть, изменить нужно постоянную таблицу, так?
← →
Вика (2004-08-13 15:11) [10]2 1008 ©
В этой таблице только часть всеобщей таблицы, подмножество записей у которых status = "USED". Это значит в другой программе за неделю изменились статусы некоторых карточек, и в эту "временную" таблицу выгружается это подмножество записей со статусом "used". В то время как всеобщая таблица не изменяется и надо ее сравнить с этой временной и изменить статусы у соттветствующих записей.
← →
Skyle © (2004-08-13 15:15) [11]А в чём именно сложность заключается?
← →
Вика (2004-08-13 15:16) [12]2 Skyle ©
Сложность - в общем-то в том, что я не знаю как этот запрос написать на SQL :(
← →
Skyle © (2004-08-13 15:26) [13]
UPDATE ConstTable
SET ConstTable.Status = T.Status,
ConstTable.dateStatusChange = T.dateStatusChange
FROM TempTable T
WHERE ConstTable.Id = T.ID
Оно?
ConstTable - постоянная таблица, TempTable - еженедельная.
← →
1008 © (2004-08-13 15:31) [14]Вика (13.08.04 15:11) [10]
Например:
1. отсортировать постоянную таблицу по статусу "UNUSED" (или как он у вас обозначен);
2. пройтись по отсортированным записям и сравнить есть ли данная текущая запись во "временной" таблице;
2.1. если есть, то внести изменения в постоянную таблицу
2.2. смотрим следующую запись.
← →
46_55_41_44 © (2004-08-13 15:52) [15]Нужно делать программно... все С SQL не сделаешь.. могу помочь, если хошь...
← →
Ega23 © (2004-08-13 15:59) [16]Нужно делать программно... все С SQL не сделаешь.
Да ну?
← →
Чайник (2004-08-13 16:01) [17]46_55_41_44:
Мда... оригинально.. приведи пожалуйста пример того что нельзя сделать на sql?
← →
Квэнди © (2004-08-13 16:03) [18]Нужно делать программно... все С SQL не сделаешь.. могу помочь, если хошь...
Очень интересное заявление, а вы вкурсе что большинство приложений, разработанных для обработки баз дынных используют Delphi исключительно как визуальную оболочку?
← →
46_55_41_44 © (2004-08-13 16:04) [19]Ирония не уместна помоему...
← →
Ega23 © (2004-08-13 16:07) [20]Ирония не уместна помоему...
Отнюдь. Что такое технология "клиент-сервер"?
← →
Квэнди © (2004-08-13 16:08) [21]46_55_41_44:
ето не ирония, а просто удивление.... кстати, Чайник очень правильно сказал: приведите пример...
← →
Квэнди © (2004-08-13 16:11) [22]46_55_41_44: И еще вопрос: вы много приложений написали, использующих SQL?.. по-мойму нет, совет вам один: почитайте подробное описание SQL и, возможно, тогда вы передумаете....
А вот про клиент сервер.... ждем ответа :)
← →
Ega23 © (2004-08-13 16:13) [23]приведите пример...
Я только один знаю - когда в качестве БД используешь плоские файлы собственного формата. Так делать, теоретическиЮ можно. Практически - изврат.
← →
Квэнди © (2004-08-13 16:18) [24]Ega23 ... ето сложно назвать примером по теме :) так как подразумевается пример с использование БД существующих форматов... а в частности разговор шел о SQL.. так что посмотрим на пример :))
← →
Вика (2004-08-13 16:19) [25]2 Skyle © (13.08.04 15:26) [13]
А как возвращать из Update набор измененных записей для отчета, сори за тупой вопрос...
← →
Ega23 © (2004-08-13 16:21) [26]
Select * FROM TempTable where Id=Твоё_значение
:о)
Кстати, где описание диалекта SQL для Access можно найти?
← →
Квэнди © (2004-08-13 16:23) [27]Вика а разве етот набор не является той самой временной таблицей?
или записи могут пересекаться? т.е. может быть такое что в временной таблице у кого- то стоит USED, и в главной таблице у етого же человека тоже USED?
← →
Вика (2004-08-13 16:25) [28]Ну да все правильно, совсем уже зашпариласть с этими SQL"ми и Dlph"ями :)
← →
Квэнди © (2004-08-13 16:25) [29]Ega23 © так какого не знаю, может спросишь чтонить конкретное? может смогу помочь приходилось частенько сталкиваться.. хотя впринципе многие вопросы решаются с помощью help Access хотя я не помню есть ли там описание SQl..
← →
Ega23 © (2004-08-13 16:32) [30]help Access хотя я не помню есть ли там описание SQl..
Вот именно. Предположим, у меня есть скрипт на создание БД в Access (модель создал в Power Designer, там же сгенерил скрипт). Есть ли какая-нибудь внешняя утилитка, типа isql, которая этот скрипт может толкнуть?
Вообще что-нибудь про Access почитать, только не "Для того, чтобы создать связь между таблицами откройте Конструктор..."
← →
46_55_41_44 © (2004-08-13 16:34) [31]таксс... извините ... не было меня тут...
"клиент-сервер" это когда физически база находится на одном компе сервере, а все остальные подключаются к ней как клиенты...
MS SQL Server, Oracle, Interbase например это "клиент-сервер"ные СУБД...
← →
Квэнди © (2004-08-13 16:35) [32]Ega23 ©
http://narod.yandex.ru/cgi-bin/yandsearch?user=delphiworld&text=access&where=2
← →
46_55_41_44 © (2004-08-13 16:36) [33]А на счет примера... ничего просто в голову не приходит
← →
Квэнди © (2004-08-13 16:37) [34]46_55_41_44 а чем же тогда было обоснованно ваше заявление?
"Нужно делать программно... все С SQL не сделаешь.. могу помочь, если хошь..."...
← →
46_55_41_44 © (2004-08-13 16:38) [35]Объяснение, что такое "клиент-сервер" грубое... но думаю подойдет!
← →
Ega23 © (2004-08-13 16:38) [36]"клиент-сервер" это когда физически база находится на одном компе сервере, а все остальные подключаются к ней как клиенты...
MS SQL Server, Oracle, Interbase например это "клиент-сервер"ные СУБД...
Понятно... Так вот, как правило, клиент - слабенькая дохленькая машина. Кассовый аппарат в магазине, к примеру. Или мобильный телефон. А сервер - очень мощная машина.
По-идее, всё что умеет делать клиент, это предоставить юзеру какой-то пользовательский интерфейс и формирование запросов к серверу. Сервер эти запросы вычисляет и возвращает некие наборы данных клиенту (для отображения в том самом интерфейсе). Вот и всё.
← →
Erik1 (2004-08-13 16:40) [37]В MsAccess есть очень мощный sql builder! Заходим в Access открываем базу, переходим на закладку Query, делаем New Query. Далее добавляем таблицу в поля мышкой перетаскиваем звездочку. Все наш sql готов. Его можно как StoredProc запускать из под Delphi. Access весма неплох для начинающих.
← →
Ega23 © (2004-08-13 16:40) [38]Объяснение, что такое "клиент-сервер" грубое
Оно неправильное. БД и клиент(ы) могут находиться физически на одной машине.
← →
сергей1 (2004-08-13 16:42) [39]еще так можно
update ConstTab set ConstTab.status = "used" where ConstTab.p_key in
(select TempTab.p_key from TempTab where TempTab.status = "used")
← →
Ega23 © (2004-08-13 16:44) [40]В MsAccess есть очень мощный sql builder! Заходим в Access открываем базу, переходим на закладку Query, делаем New Query. Далее добавляем таблицу в поля мышкой перетаскиваем звездочку. Все наш sql готов. Его можно как StoredProc запускать из под Delphi. Access весма неплох для начинающих.
Эта вещь View называется.
Я бы не сказал, что я начинающий. Билдер, конечно, штука хорошая, однако мне нужно описание именно ДИАЛЕКТА SQL. Со списком предоставляемых функций, переменных и т.п.
Например, в MS SQL есть такие вещи, как NoCount, @@IDENTITY, Cast/Convert. Мне нужно такое же, но для Access.
Страницы: 1 2 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.54 MB
Время: 0.058 c