Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с запросом / 9 сообщений из 9, страница 1 из 1
10.02.2004, 15:42
    #32404430
STINGO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
Таблица А
______________________
КодА    КодБ   Дата   
______________________
 1    |    1    |  10 . 10 . 03 
 2    |    1    |  11 . 10 . 03 
 3    |    1    |  12 . 10 . 03 
 4    |    2    |  10 . 10 . 03 
 5    |    2    |  11 . 10 . 03 
 6    |    2    |  12 . 10 . 03 
 7    |    3    |  12 . 10 . 03 

Таблица Б
_______________
КодБ |   Имя
_______________
 1     |  л- 316 
 2     |  Л- 304 
 3     |  л- 100 

Нужен результат:
________________________________
КодА  |  Дата    | КодБ | Имя   
________________________________
 1      |  10 . 10 . 03  |  1     | л- 316  
 4      |  10 . 10 . 03  |  2     | л- 304  
      |  10 . 10 . 03  |  3     | л- 100       --Этой записи нет в таблице А
 
 2      |  11 . 10 . 03  |  1     | л- 316  
 5      |  11 . 10 . 03  |  2     | л- 304 
      |  11 . 10 . 03  |  3     | л- 100       --Этой записи нет в таблице А
 
 3      |  12 . 10 . 03  |  1     | л- 316  
 6      |  12 . 10 . 03  |  2     | л- 304 
 7      |  12 . 10 . 03  |  3     | л- 100 

Пытался сделать вот так:

SELECT А.КодА, А.Дата, Б.КодБ, Б.Имя
FROM А RIGHT JOIN Б ON А.КодБ = Б.КодБ
ORDER BY Дата, КодБ;

А как сделать, чтобы Л- 100  имел место для каждой даты?
...
Рейтинг: 0 / 0
10.02.2004, 15:58
    #32404459
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
И откуда оно возьмет Дату?
...
Рейтинг: 0 / 0
10.02.2004, 16:46
    #32404558
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SELECT А.КодА, А.Дата, Б.КодБ, Б.Имя
FROM А inner JOIN Б ON А.КодБ = Б.КодБ

union all

SELECT null as КодА, d.Дата, Б.КодБ, Б.Имя
FROM  Б  cross join (select distinct дата from a ) d
where d.data & Б.КодБ not in (SELECT  А.Дата & Б.КодБ
FROM А inner JOIN Б ON А.КодБ = Б.КодБ)




работоспособность не проверял ,
попробуй сам
...
Рейтинг: 0 / 0
11.02.2004, 10:19
    #32405122
STINGO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Этот запрос работает конечно, но слишком медленно.
Если в первом запросе INNER JOIN запенить на cross JOIN, то записи второго запроса уже будут присутствовать в первом запросе и можно будет обойтись без union all.
Вопрос интересный. Существует ли более красивый способ?
...
Рейтинг: 0 / 0
11.02.2004, 14:05
    #32405639
STINGO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Код: plaintext
1.
2.
3.
4.
5.
SELECT [А2].[Дата], [Б].[КодБ], [Б].[Имя], 
(((Exists (SELECT [А].КодБ FROM [А] WHERE [А].Дата = А2.Дата AND Б.КодБ = [А].КодБ))=False))
FROM А AS А2, Б
WHERE (((А2.КодБ)=[Б].[КодБ])) OR 
(((Exists (SELECT [А].КодБ FROM [А] WHERE [А].Дата = А2.Дата AND Б.КодБ = [А].КодБ))=False))
GROUP BY [А2].[Дата], [Б].[КодБ], [Б].[Имя];


Этот код работает. Четвёртый столбец показывает существует ли эта строка в таблице А.
Глупый вопрос: как объявить псевдоним временной таблицы
Код: plaintext
(((Exists((SELECT [А].КодБ FROM .....
, чтобы не писать дважды.
...
Рейтинг: 0 / 0
12.02.2004, 09:35
    #32406612
STINGO
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
:-)))
Приемлемая версия:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT А.КодА, А.Дата, Б.КодБ, Б.Имя
FROM А inner JOIN Б ON А.КодБ = Б.КодБ

union all

select    null as КодА, d.да, d.кб, d.Имя
from      (select distinct А.Дата as да, Б.КодБ as кб, Б.Имя  from А, Б ) as d 
left join (select          А.Дата as да, А.КодБ as кб         from А    ) as d2
on        d.кб = d2.кб
and       d.да = d2.да
where     d2.кб is null

ORDER BY А.Дата, Б.КодБ;


Спасибо всем!!!
Особая благодарность:
АлексейК
Geo
Владимир Саныч
...
Рейтинг: 0 / 0
12.02.2004, 10:27
    #32406695
Geo
Geo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
А я-то при чем?
...
Рейтинг: 0 / 0
12.02.2004, 10:48
    #32406724
Polev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
2 Geo
За компанию! :)
...
Рейтинг: 0 / 0
12.02.2004, 13:33
    #32407067
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с запросом
Мы с Geo в компании. :^)
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с запросом / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]