|
|
|
| Парни, доброго всем.
Не могу придумать алгоритм, как сделать запрос.
Задача:
Есть две таблицы:
Таблица1 с полем:
КАЛЕНДАРНАЯ ДАТА
01.01.2010
02.01.2010
03.01.2010
04.01.2010
05.01.2010
06.01.2010
07.01.2010
08.01.2010
09.01.2010
10.01.2010
и так далее
есть Таблица 2 с двумя, допустим полями:
ДАТА РАБОТЫ: ФИО
02.01.2010 ИВАНОВ
05.01.2010 ИВАНОВ
06.01.2010 СИДОРОВ
07.01.2010 СИДОРОВ
08.01.2010 ИВАНОВ
09.01.2010 ИВАНОВ
10.01.2010 ИВАНОВ
Необходимо создать запрос на выборку по полю ФИО из таблицы 2, допустим по СИДОРОВ и должен получиться следующий запрос с тремя полями:
КАЛЕНДАРНАЯ ДАТА: ДАТА РАБОТЫ: ФИО
01.01.2010
02.01.2010
03.01.2010
04.01.2010
05.01.2010
06.01.2010 06.01.2010 СИДОРОВ
07.01.2010 07.01.2010 СИДОРОВ
08.01.2010
09.01.2010
10.01.2010
Т.е. чтобы в запросе из первой таблицы показывались все записи по полю КАЛЕНДАРНАЯ ДАТА, а из Таблицы 2 те, записи кои есть по полю СИДОРОВ...
Надеюсь более менее донес что хочу, но что не получается
Спасибо | |
|
| |
|
|
|
|
SELECT Tabl1.Data, Tbl2.Fio
FROM TblTabCal LEFT JOIN Tbl2 ON Tbl1.Data = Tbl2.Data;
|
Как-то так, и "дата работы", наверное лишнее. Впрочем ее можно добавить в запрос
SELECT Tabl1.Data, Tbl2.DataRab,Tbl2.Fio
SELECT Tabl1.Data,Tabl2.DataRAb, Tbl2.Fio
FROM TblTabCal LEFT JOIN Tbl2 ON Tbl1.Data = Tbl2.DataRAb;
|
| |
|
| |
|
|
|
| Не прокатывает... мне нужно, чтобы из первой таблицы отбирались абсолютно все записи, а из второй к этим записям выбирались по выборке СИДОРОВ записи которые были бы если СИДОРОВ РАБОТАЛ, в запросе, но а те дни, в которые он не работал, были пустыми строками с данными в одном столбце из первой таблицы | |
|
| |
|
13 Кб. |
|
| Второй запрос дает точно это. связь Tbl1.Data->Tbl2.datRab один ко многим
см.влож. у меня только вместо фамилий количество. | |
|
| |
|
|
|
| А! еще фильтр по сидорову! Щас.
SELECT Tabl1.Data,Tabl2.DataRAb, Tbl2.Fio
FROM TblTabCal LEFT JOIN Tbl2 ON Tbl1.Data = Tbl2.DataRAb
WHERE (((IsNull([DataRab]) Or ([FIO]="СИДОРОВ"))=True));
|
| |
|
| |
|
|
|
| Вроде получилось.
Спасибо, Дядя Федор!!! | |
|
| |
|
|
|
| Нет. не работает.
Не все записи выводит. | |
|
| |
|
|
|
| А какие не выводит? Выложи кусочек базы.
SELECT Tabl1.Data,Tabl2.DataRAb, Tbl2.Fio
FROM Tabl1 LEFT JOIN Tbl2 ON Tbl1.Data = Tbl2.DataRAb
WHERE (((IsNull([DataRab]) Or ([FIO]="СИДОРОВ"))=True));
|
Кстати, ошибочка вкралась, но,думаю, ты разобрался.(Tabl1 д.б.) | |
|
| |
|
|
|
| сделай сохраненый запрос
SELECT IIf([ФИО]="СИДОРОВ","СИДОРОВ",Null) AS ФИО1, Tbl2.Data
FROM Tbl2;
|
и таблиу1 подключай к этому запросу, а не к табл2.
Это исключит всех не сидоровых, но оставит все даты.
Можно и вложенным запросом. Думайте... | |
|
| |
|
14 Кб. |
|
| Кусочек базы...
две таблицы на которых строится запрос со ссылкой на форму frmSdanoVArchiv
Если в ней в поле выбрать допустим ОКВКУ 0215... то можно видить, что нет записей за 3-е и 2-е октября... а они нужны, пусть и пустые, только в первом столбце дата, но нужны | |
|
| |
|
94 Кб. |
|
| да... а таблицы-то присоединенные... лано посмотрю по текстам
нет не получается быстро. мож кусочек таблий внедришь
пока посмотри мой пример. (там вместо фамилий количество.
Посмотри запросы 1,2,3 - может переделаешь под свою задачу.
нет времени оптимизировать с вложенными запросами.
ДОБАВИЛ запрос4 сразу все одним запросом, только имена полей см. | |
|
| |
|
27 Кб. |
|
| Извиняюсь, вот с внедренными таблами а не прикрепленными | |
|
| |
|
26 Кб. |
|
| Так?=>
ИСПРАВИЛ сортировку | |
|
| |
|
|
|
| Точно так!
Спасибо ААААГромное!!! | |
|
| |
|