Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.55 MB
Время: 0.04 c
14-1093117892
DeadMeat
2004-08-21 23:51
2004.09.12
Инсталлер для компонентов


3-1092521194
Fantasy
2004-08-15 02:06
2004.09.12
DATA


3-1092377779
erden
2004-08-13 10:16
2004.09.12
как вытащить текст хранимой процедуры ...


14-1093385067
Gero
2004-08-25 02:04
2004.09.12
32-битных иконки


3-1092635311
Shap
2004-08-16 09:48
2004.09.12
DBGrid + DBNavigator





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский