powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с запросом
9 сообщений из 9, страница 1 из 1
Помогите с запросом
    #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
Помогите с запросом
    #32404459
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
И откуда оно возьмет Дату?
...
Рейтинг: 0 / 0
Помогите с запросом
    #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
Помогите с запросом
    #32405122
STINGO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Этот запрос работает конечно, но слишком медленно.
Если в первом запросе INNER JOIN запенить на cross JOIN, то записи второго запроса уже будут присутствовать в первом запросе и можно будет обойтись без union all.
Вопрос интересный. Существует ли более красивый способ?
...
Рейтинг: 0 / 0
Помогите с запросом
    #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
Помогите с запросом
    #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
Помогите с запросом
    #32406695
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А я-то при чем?
...
Рейтинг: 0 / 0
Помогите с запросом
    #32406724
Фотография Polev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Geo
За компанию! :)
...
Рейтинг: 0 / 0
Помогите с запросом
    #32407067
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Мы с Geo в компании. :^)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Помогите с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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