Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не работает простейший LEFT JOIN / 25 сообщений из 33, страница 1 из 2
15.06.2016, 17:21
    #39256525
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Добрый день всем!
Второй день не могу разобраться почему не работает простой LEFT JOIN в MS ACCESS 2013.
Имеем 2 запроса, которые выдают 2 простые таблицы такого вида:

Запрос 1 "SelectPgWk"

Код: plaintext
1.
2.
3.
4.
5.
6.
Weeks	PG
201624	Cat1
201624	Cat2
201623	Cat1
201623	Cat2
201622	Cat1
201622	Cat2

Запрос 2 "SelectPgWkVal"

Код: plaintext
1.
2.
3.
4.
5.
6.
Weeks	PG	SumValue
201624	Cat1	3311,13
201622	Cat2	757,25
201621	Cat3	2114,23
201620	Cat3	11456,66
201619	Cat2	11768,99
201617	Cat4	95,59

Необходимо ко всем строкам первой таблицы добавить 3-ю колонку второй таблицы где совпадают первые две, как-то так:

Код: plaintext
1.
2.
3.
4.
5.
6.
Weeks	PG	Res
201624	Cat1	3311,13
201624	Cat2	0
201623	Cat1	0
201623	Cat2	0
201622	Cat1	0
201622	Cat2	757,25

Пишу вот такой запрос:

Код: sql
1.
2.
SELECT W.Weeks, W.PG, V.SumValue AS Res
FROM SelectPgWk AS W LEFT JOIN SelectPgWkVal AS V ON ((W.PG = V.PG) AND (W.Weeks = V.Weeks));



.. и получаю пустую колонку Res:

Код: plaintext
1.
2.
3.
4.
5.
6.
Weeks	PG	Res
201622	Cat1	
201623	Cat1	
201624	Cat1	
201622	Cat2	
201623	Cat2	
201624	Cat2	

Ткните пожалуйста неопытного где я туплю.
Заранее благодарен.
...
Рейтинг: 0 / 0
15.06.2016, 17:55
    #39256557
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Ну очень странно...
Начни проверку с того, что сохрани выборки в виде статических таблиц и проверь, нормально ли выполняется связывание с ними.
...
Рейтинг: 0 / 0
15.06.2016, 17:58
    #39256560
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
На лишние пробелы/спецзнаки похоже
...
Рейтинг: 0 / 0
15.06.2016, 18:01
    #39256563
Alex Pancho
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
SumValue - вычисляемое или статичное? Что выходит при INNER или RIGTH Join?
...
Рейтинг: 0 / 0
15.06.2016, 19:14
    #39256618
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
а какие таблицы источники запросов,откуда берется поле SUM, какова структура-короче покажите БД
...
Рейтинг: 0 / 0
16.06.2016, 10:10
    #39256853
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Akina,

сохранил, выполнил тот же запрос - все работает:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Weeks	PG	Res
201624	Cat1	3311,13
201624	Cat2	0
201623	Cat1	0
201623	Cat2	0
201622	Cat1	0
201622	Cat2	757,25
...
Рейтинг: 0 / 0
16.06.2016, 10:12
    #39256854
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
MrShinНа лишние пробелы/спецзнаки похоже

Можно конкретнее в каком месте их искать? Запросы переписаны с нуля несколько раз и сами по себе работают.
Запрос JOIN скопирован и работает на статических таблицах.
...
Рейтинг: 0 / 0
16.06.2016, 10:20
    #39256860
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
irbis_triffleМожно конкретнее в каком месте их искать?
Для теста я бы попытался запустить оба запроса, из строки первого запроса, которая точно должна матчиться со вторым скопировать значения, по которым идет связь и отфильтровать по ним второй запрос. Если в результате все строки исчезнут, значит значения не равны и нужно искать. Иначе... чудеса в решете какие то получаютс.

Что выдает запрос, если LEFT JOIN заменить на обычный? Ну или mdb дайте посмотреть, так проще будет.
...
Рейтинг: 0 / 0
16.06.2016, 10:21
    #39256863
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Какие типы имеют поля в запросах?
Попробуй сделать стандартизацию типа - например, trim строковых значений или там округление числовых...
...
Рейтинг: 0 / 0
16.06.2016, 11:14
    #39256933
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Alex PanchoSumValue - вычисляемое или статичное? Что выходит при INNER или RIGTH Join?
SumValue - вычисляемое, сумма

INNER JOIN - не выводит ни одной строки
RIGTH JOIN - не выводит ни одной строки
...
Рейтинг: 0 / 0
16.06.2016, 11:22
    #39256946
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
sdkuа какие таблицы источники запросов,откуда берется поле SUM, какова структура-короче покажите БД

Структуры для этих запросов нет - оба запроса берутся из одной таблицы: первый выбирает 3 максимальные Weeks и все PG, которые были в этих Weeks; второй выбирает сумму поля на каждую пару Weeks и PG. В первом запросе есть декартово перемножение таблиц уникальных Weeks и PG что бы нулевые значения из второй таблицы так же попали в выборку.
...
Рейтинг: 0 / 0
16.06.2016, 17:04
    #39257268
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
AkinaКакие типы имеют поля в запросах?
Попробуй сделать стандартизацию типа - например, trim строковых значений или там округление числовых...

округлил цифровые, сделал TRIM на текстовые в обеих запросах, не прокатило
...
Рейтинг: 0 / 0
16.06.2016, 17:27
    #39257293
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
irbis_triffleокруглил цифровые
Округления недостаточно. Связывать по полю с плавающей точкой крайне не рекомендуется из-за проблем с округлениями. Попробуйте явно конвертировать в целое
...
Рейтинг: 0 / 0
16.06.2016, 17:32
    #39257301
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Ну вообще пора бы просто выложить почищенную от лишнего хлама базу.
...
Рейтинг: 0 / 0
16.06.2016, 17:35
    #39257304
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
ДАВНО ПОРА
...
Рейтинг: 0 / 0
17.06.2016, 11:11
    #39257619
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Прошу прощения за задержку, прикрепил очищенную базу.
...
Рейтинг: 0 / 0
17.06.2016, 11:20
    #39257629
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
irbis_triffleприкрепил очищенную базу
А в формат 97-2002 (MDB) конвертануть не догадался? не у всех стоИт самая распоследняя версия...
...
Рейтинг: 0 / 0
17.06.2016, 11:32
    #39257651
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Тогда и опишу общую задачу:
есть значения ("ResultValue"), скажем продаж, за несколько недель ("Weeeks") по отдельным магазинам "Entity code", товарным категориям "Product group" и с параметром "StockDaysRangeShort"
Необходимо получить сумму этих продаж в разрезе товарных категорий, за последние 3 недели, по условию "магазин есть в отдельной таблице SAM_Entities_Selection" и параметр равен "(180,360]". При этом пустые строки так же должны попасть в результат с нулем.
...
Рейтинг: 0 / 0
17.06.2016, 11:35
    #39257656
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Akinairbis_triffleприкрепил очищенную базу
А в формат 97-2002 (MDB) конвертануть не догадался? не у всех стоИт самая распоследняя версия...

Ругается на невозможность понижения версии, сейчас попробую что-то наколдовать.
...
Рейтинг: 0 / 0
17.06.2016, 11:42
    #39257668
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
irbis_triffleРугается на невозможность понижения версии
Да выгрузи ты таблицы в CSV и запросы текстом, делов-то...
...
Рейтинг: 0 / 0
17.06.2016, 12:17
    #39257734
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
Akinairbis_triffleРугается на невозможность понижения версии
Да выгрузи ты таблицы в CSV и запросы текстом, делов-то...

Сделал

Запросы:

SAM_ValueSumByWeeksByEntityByCategoryPastYear
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT Sum(StockValue.ResultValue) AS [Sum-ResultValue], StockValue.[Weeek] AS Week, StockValue.[Entity code] AS Entity, StockValue.StockDaysRangeShort AS StockDaysRangeShort, StockValue.[>60] AS Plus60, StockValue.[Product group] AS [Product group]
FROM Stock AS StockValue
WHERE (NOT StockValue.[Product group] = "LED Lighting" 
				     AND NOT StockValue.[Product group] = "Power Battery"
     				AND StockValue.[Entity code] IN (SELECT SAM_Entities_Selection.[Entity code] AS TargetEntity 
                                                       											FROM SAM_Entities_Selection))
GROUP BY StockValue.[Weeek], StockValue.[Entity code], StockValue.StockDaysRangeShort, StockValue.[Product group], StockValue.[>60];



SelectPgWk
Код: sql
1.
2.
SELECT ROUND(PgWk.Weeks,0) AS Weeks, TRIM(PgWk.PG) AS PG
FROM (SELECT Top3Weeks.Weeks, PGs.PG FROM Top3Weeks, (SELECT DISTINCT Val.[Product group] AS PG FROM SAM_ValueSumByWeeksByEntityByCategoryPastYear AS Val LEFT JOIN Top3Weeks AS T3W ON T3W.Weeks = Val.Week WHERE (NOT Val.[Product group] = "Cat0"  			AND NOT Val.[Product group] = "Cat1" 			AND Val.StockDaysRangeShort = "(180,360]" 			AND Val.Entity IN (SELECT SAM_Entities_Selection.[Entity code] AS TargetEntity FROM SAM_Entities_Selection) 			AND NOT IsNull(T3W.Weeks)))  AS PGs)  AS PgWk;



SelectPgWkVal
Код: sql
1.
2.
3.
SELECT ROUND(SAM_ValueSumByWeeksByEntityByCategoryPastYear.Week,0) AS Weeks, TRIM(SAM_ValueSumByWeeksByEntityByCategoryPastYear.[Product group]) AS PG, ROUND(SAM_ValueSumByWeeksByEntityByCategoryPastYear.[Sum-ResultValue],2) AS SumValue
FROM SAM_ValueSumByWeeksByEntityByCategoryPastYear
WHERE (((SAM_ValueSumByWeeksByEntityByCategoryPastYear.StockDaysRangeShort)="(180,360]") AND ((SAM_ValueSumByWeeksByEntityByCategoryPastYear.Entity) In (SELECT SAM_Entities_Selection.[Entity code] AS TargetEntity FROM SAM_Entities_Selection)));



Top3Weeks
Код: sql
1.
2.
SELECT TOP 3 [%$##@_Alias].TopWeeks AS Weeks
FROM (SELECT DISTINCT (Stock.[Weeek]) AS TopWeeks FROM Stock ORDER BY Stock.[Weeek] DESC)  AS [%$##@_Alias];



И тот запрос, в котором я хочу получить результат:

Запрос1
Код: sql
1.
2.
SELECT W.Weeks, W.PG, V.SumValue AS Res
FROM SelectPgWk AS W LEFT JOIN SelectPgWkVal AS V ON ((W.PG = V.PG) AND (W.Weeks = V.Weeks));
...
Рейтинг: 0 / 0
17.06.2016, 12:39
    #39257745
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
irbis_triffle,
вычисляемые поля в stock00 можно заменить на запрос stock
...
Рейтинг: 0 / 0
17.06.2016, 12:44
    #39257749
irbis_triffle
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
ПЕНСИОНЕРКАirbis_triffle,
вычисляемые поля в stock00 можно заменить на запрос stock

Не совсем понимаю для чего это делать..
...
Рейтинг: 0 / 0
17.06.2016, 13:14
    #39257777
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
irbis_triffle, наблюдаю странную вещь - подзапрос SelectPgWkVal AS V не возвращает записи в этом запросе. Для проверки попробуй простое
Код: sql
1.
2.
SELECT SelectPgWk.Weeks, SelectPgWk.PG, SelectPgWkVal.Weeks, SelectPgWkVal.PG, SelectPgWkVal.SumValue
FROM SelectPgWk, SelectPgWkVal;


Вместо ожидаемого декарта с 6*8=48 записями имеем отсутствие записей.
Полагаю, причина в том, что на каком-то этапе выполнения какого-то подзапроса таблица блокируется, и другой подзапрос не получает к ней доступа.
...
Рейтинг: 0 / 0
17.06.2016, 13:14
    #39257778
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не работает простейший LEFT JOIN
PS. Мог бы и проверить, что выкладываешь... пришлось править твои запросы, чтобы они работали.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не работает простейший LEFT JOIN / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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