Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Вниз

Запрос на базе нескольких таблиц в Accesse.   Найти похожие ветки 

 
JazY   (2005-12-10 23:42) [0]

Я использую обычный Аксесовский файл в основе которого 12 таблиц (по количеству мясецев). Таблицы стандартные и заполняются нашими местными манагерами (они же менеджеры). Во всех таблицах есть поле "номер машины". Суть в том, что каждый месяц уходит машина с текущими заказами. Т.е к примеру, в марте уходит машина в основном с заказами, которые получены в марте. Но кроме мартовских заказов в нее попадают некоторые январьские и февральские. Таким образом, заполняя поля "номер машины" (речь идет о порядковом номере) один и тот же номер может фигурировать в разных месяцах. Ключевая задача заключается в том, чтобы вывести отчет по номерам машин. Если бы это была единая таблица, то проблем нет. Однако, тут 12 таблиц (и поменять тут ничего нельзя по целому ряду объективных и не очень причин) и запрос должен проверить все 12 таблиц. В принципе, теоритически понятно как эту задачу выполнить в Делфи. Насколько я понимаю, можно последовательно загружать таблицы искать в них нужные строки и записывать их в отчет. Но данную задачу видимо можно выполнить и внутри самого Аксеса. Т.е средствами Аксеса, создать запрос, а потом этот запрос вызывать из Делфи. Можно ли средствами Аксеса создать запрос, который просмотрить 12 таблиц и выведет нужный результат?


 
Anatoly Podgoretsky ©   (2005-12-11 00:01) [1]

UNION


 
JazY   (2005-12-11 00:10) [2]


> UNION

Эээээ.... А это что такое? Можно по подробней?


 
Anatoly Podgoretsky ©   (2005-12-11 00:16) [3]

Опа, как же ты тогда программируешь в Акцесс?


 
JazY   (2005-12-11 00:32) [4]


> Опа, как же ты тогда программируешь в Акцесс?

Я не программирую в Аксес, я просто хочу использовать встроенные функции, чтобы упростить работу в Делфи.


 
Anatoly Podgoretsky ©   (2005-12-11 01:16) [5]

Ну какая разница Акцесс или нет, это относится к фундаменту SQL
Теперь бери справку по Акцесс (JET) или можно по любому серверу и смотри как этим пользоваться.


 
YurikGL ©   (2005-12-11 01:22) [6]

ИМХО автору нужно посмотреть, что такое SQL-запросы, как их используют и что означает UNION.


 
JazY   (2005-12-11 02:10) [7]

Т.е я так понял, что с помощью SQL запросов можно вытащить информацию из нескольких таблиц?
Однако! Я так понял, что на храпом данную задачу не разрешить.
Дело в том, что я признаться новичок. Аксес и Делфи использую не как специлист программист, а в попытке упростить свою работу с помощью этакого кустарного программирования. Мне бы увидеть пример и я бы по аналогии решил указанную задачу. Конечно, справка это здорово, но мне она сейчас как я ежу футболка. Вот пример сильно бы помог.


 
YurikGL ©   (2005-12-11 02:24) [8]


> Т.е я так понял, что с помощью SQL запросов можно вытащить
> информацию из нескольких таблиц?

Абсолютно верно


> Мне бы увидеть пример и я бы по аналогии решил указанную
> задачу.

Делаешь запрос типа select ... from ... where....

Подробнее см http://podgoretsky.com/ddp.html Мартин Грубер. Понимание SQL

И вообще советую почитать книги по основам БД.


 
JazY   (2005-12-11 02:30) [9]

2 YurikGL
Я уже книжку качаю (за ссылку спасибо!) и буду сейчас обучаться, но если вдруг появится возможность указать образец, то это сильно поможет делу.


 
JazY   (2005-12-11 02:44) [10]

SELECT snum, sname
FROM  Salespeople
WHERE city = "London"
UNION
SELECT cnum, cname
FROM Customers
WHERE city = "London";                        

Вот кажись нашел пример! Все таки книга - это сила... особенно правильные :)

Спасибо за помощь!


 
Anatoly Podgoretsky ©   (2005-12-11 13:52) [11]

Ну вот наконец, с самого начала туда и толкали.
Теперь второй толчок, читай книгу отдельно от программирования, а не взамен. Базовые основы надо знать до.


 
sniknik ©   (2005-12-11 15:01) [12]

хм.. не очень очевидно и думаю надо про это сказать.
с UNION при таком выборе (из всех поле выбраны только 2) могут быть повторы записей по значениям оба совпадут (и даже если одно из них уникально в пределах своей таблици... тоже может но с очччень маленькой вероятностью)
в общем тут надо(лучше) использовать UNION ALL чтобы не потерять дубль (который на самом деле не дубль а аналогичный рейс на туже сумму в другом месяце).
ну или признак таблицы/месяца в каждый запрос включить.


 
JazY   (2005-12-11 22:45) [13]


> использовать UNION ALL

Точно! Я вот тестировал и как раз обнаружил такой косяк.


 
msguns ©   (2005-12-12 09:51) [14]

БД изначально спроектирована "инвалидно" и обречена на то, что информация в ней будет недостоверна и не нормализована.

1. Привести модель БД в "естественный" вид, введя вместо непонятных таблиц, содержащих "псевдодокументостроки" (еще и помесячно) нормальные "нативные" объекты: заказы, поступления, отгрузки.  
2. Интерфейс переделать с редактирования "таблиц" на редактирование "документов" как единых и неделимых сущностей.
3. Добавить складской учет с возможностью учета по поставкам и хранения с указанием заказа, "под" который приобретался товар у поставщиков. Все движение (все документы) "завязать" на склад.
4. Ввести учет менеджеров с разделением заказов и покупателей: каждый документ должен быть "авторизирован" на соотв. менеджера.

Только после этого имеет смысл мостить какую-то аналитику, в т.ч. и ту, о которой упоминается в сабже.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2005.12.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.03 c
2-1133854420
Piero
2005-12-06 10:33
2005.12.25
Как сделать таймер в потоке


2-1134144844
guest__
2005-12-09 19:14
2005.12.25
TStrings - уничтожение лишних строк.


5-1118605866
Владимир
2005-06-12 23:51
2005.12.25
Выделение элемента дерева правой кнопкой мыши


4-1130396689
DancerMan
2005-10-27 11:04
2005.12.25
TWebBrowser запретить выделение


1-1133439831
ramzes13
2005-12-01 15:23
2005.12.25
Как в RichEdit отобразить спецсимволы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский