Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Некорректная работа LEFT JOIN / 13 сообщений из 13, страница 1 из 1
13.06.2019, 18:18
    #39826304
british_whale
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
Люди, подскажите пожалуйста, почему у меня в одном из множества аналогичных запросов функция LEFT JOIN почти в два раза уменьшает количество строк в новом файле по сравнению с тем, к которому шло прикрепление?
Файл слишком большой, поэтому переслать не смогу.

SELECT
A.*,
B.[КОЭФ]
FROM K_rate_Krati AS A LEFT JOIN K_rate AS B
ON (A.[НТД на техтребование (Код)]=B.[НД_ТЕХ_ТРЕБ]) AND (trim(A.[Ширина])<=B.[ШИРИНА_MAX]) AND (trim(A.[Ширина])>=B.[ШИРИНА_MIN]) AND (trim(A.[Толщина])<=B.[ТОЛЩ_MAX]) AND (trim(A.[Толщина])>=B.[ТОЛЩ_MIN]) AND (A.[Наименование марки]=B.[НАИМЕНОВАНИЕ_МАРКИ]) AND (A.[Код марки]=B.[КОД_МАРКИ]) AND (A.[НТД на профиль (Код)]=B.[НД_СОРТ]) AND (A.[Код вида продукции]=B.[Код вида продукции])

ORDER BY A.[ID];

Под спойлером текст запроса.
...
Рейтинг: 0 / 0
13.06.2019, 19:54
    #39826329
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
british_whale,

подозреваю, что не везде заполнены ширина/толщина или марка или сорт или вид
надо смотреть таблицы

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
SELECT A.*, B.[КОЭФ]
FROM K_rate_Krati AS A
 LEFT JOIN K_rate AS B
ON (A.[НТД на техтребование (Код)]=B.[НД_ТЕХ_ТРЕБ])
 AND (trim(A.[Ширина])<=B.[ШИРИНА_MAX])
 AND (trim(A.[Ширина])>=B.[ШИРИНА_MIN])
 AND (trim(A.[Толщина])<=B.[ТОЛЩ_MAX])
 AND (trim(A.[Толщина])>=B.[ТОЛЩ_MIN])
 AND (A.[Наименование марки]=B.[НАИМЕНОВАНИЕ_МАРКИ])
 AND (A.[Код марки]=B.[КОД_МАРКИ])
 AND (A.[НТД на профиль (Код)]=B.[НД_СОРТ])
 AND (A.[Код вида продукции]=B.[Код вида продукции])

ORDER BY A.[ID];
...
Рейтинг: 0 / 0
14.06.2019, 11:11
    #39826481
Некорректная работа LEFT JOIN
Т.е. ваш запрос возвращает меньше записей, чем есть в таблице А? Вообще-то LEFT JOIN не любит связь по множеству полей, а тут еще >= и trim (кстати, вы пробовали без нее). Может JET и не справляется. А чем этот запрос отличается от работающих? Количеством исходных записей?
Где используется запрос? LEFT JOIN обязательно?
А что значит "уменьшает количество строк в новом файле "?
...
Рейтинг: 0 / 0
14.06.2019, 11:38
    #39826489
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
Кривцов АнатолийВообще-то LEFT JOIN не любит связь по множеству полейОткуда такая информация?

Кривцов АнатолийМожет JET и не справляется.Вам правда приходилось сталкиваться с тем, что Jet отдаёт результат выполнения запроса частично по причине "не справился"?
...
Рейтинг: 0 / 0
14.06.2019, 11:42
    #39826492
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
british_whale , модифицируйте запрос в запрос на создание таблицы, и сохраните результат его работы в новой таблице.
Получите запросом количество уникальных ID (в исходной K_rate_Krati это поле - уникальный индекс, верно?) для этой новой таблицы.
Также получите запросом количество уникальных ID для исходной таблицы K_rate_Krati .
Сравните полученные два числа - они просто обязаны совпадать.
...
Рейтинг: 0 / 0
14.06.2019, 11:44
    #39826494
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
british_whaleФайл слишком большой, поэтому переслать не смогу.по такому случаю можно сделать пример с двумя таблицами с представительным содержанием.

Все связи построенные на неравенствах перенести в секцию WHERE.
...
Рейтинг: 0 / 0
14.06.2019, 11:45
    #39826497
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
british_whaleФайл слишком большой, поэтому переслать не смогу.Если из БД удалить все ненужные для этого запроса объекты, базу сжать и заZIPовать - есть шанс уложиться в лимит 150 кб. Если нет - всегда можно выложить такой архив на какой-нить гуглодиск, дать к нему доступ, и опубликовать тут ссылку на файл.
...
Рейтинг: 0 / 0
14.06.2019, 11:45
    #39826498
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
ПанургВсе связи построенные на неравенствах перенести в секцию WHERE.Это изменит логику запроса.
...
Рейтинг: 0 / 0
14.06.2019, 11:50
    #39826504
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
AkinaЭто изменит логику запроса.ну да, я уже понял. Не часто приходится делать такие запросы...
...
Рейтинг: 0 / 0
14.06.2019, 12:57
    #39826559
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
AkinaЕсли нет - всегда можно выложить такой архив на какой-нить гуглодиск, дать к нему доступ, и опубликовать тут ссылку на файл.Посмотреть бы....
Может я чё не так понимаю,но из Вашего запроса я уяснил следующее:показать продукцию которая не укладывается в тех.условия по параметру(ам) для данного вида. Так или нет?
...
Рейтинг: 0 / 0
14.06.2019, 13:08
    #39826567
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
Съезд экстрасенсов объявляю открытым!

Оставьте в left join свзяь по коду продукции(если я вообще хоть как то правильно понял запрос) все остальные фильтры перенесите в
where в стиле (фильтры) OR B.[Код вида продукции] IS NULL
...
Рейтинг: 0 / 0
14.06.2019, 13:09
    #39826568
Озверин
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
ОзверинСъезд экстрасенсов объявляю открытым!

Оставьте в left join свзяь по коду продукции(если я вообще хоть как то правильно понял запрос) все остальные фильтры перенесите в
where в стиле (фильтры) OR B.[Код вида продукции] IS NULL

и потом уже шаманьте. Но понять, что не так без данных - невозможно.
...
Рейтинг: 0 / 0
14.06.2019, 13:38
    #39826584
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Некорректная работа LEFT JOIN
ОзверинСъезд экстрасенсов объявляю открытым!ОзверинНо понять, что не так без данных - невозможно. и не взглянув на схему....
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Некорректная работа LEFT JOIN / 13 сообщений из 13, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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