|
Запрос с группировкой по нескольким таблицам. Проблема - в поле с суммой, суммирует линее
|
|||
---|---|---|---|
#18+
Рад приветствовать всех на этом форуме! Я тут новичок, так что заранее извиняюсь если что-то не так объясню :) В приложенном примере несколько таблиц (журналов учета поступления трубы и того что с ней дальше делали). Уникальный признак (ключ) для всех таблиц является "№ трубы". Когда делаю сводную таблицу (запрос) в которой мне нужен общий перечень номеров труб (уникальных!), в поле, где я бы хотел чтобы суммировалась длина, которая попала в таблицу "монтаж", по этим трубам суммируется больше чем нужно, ТОЛЬКО по тем трубам, которые есть в журнале резки. И количество резов тоже считается в 2 раза больше чем нужно... В конструкторе запросов поставил условие ">13" на то злосчастное поле с суммой для наглядности, это те трубы на которых длина посчиталась больше чем нужно. Очень прошу помощи в решении этой проблемы. Буду очень признателен =) ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2017, 18:02 |
|
Запрос с группировкой по нескольким таблицам. Проблема - в поле с суммой, суммирует линее
|
|||
---|---|---|---|
#18+
На сколько я понимаю это решается подзапросом, но всё никак их не освою... ... |
|||
:
Нравится:
Не нравится:
|
|||
19.07.2017, 18:22 |
|
Запрос с группировкой по нескольким таблицам. Проблема - в поле с суммой, суммирует линее
|
|||
---|---|---|---|
#18+
Артём С.На сколько я понимаю это решается подзапросом, но всё никак их не освою... Для начала создайте дополнительный запрос, возвращающий суммарную длину каждой трубы (допустим "Запрос2"), а в основном запросе используйте его вместо табл. "монтаж". Т.е. вместо: SELECT Sum(монтаж.Длина), ... FROM монтаж... пишете SELECT First(Запрос2.Длина),... FROM Запрос2... Затем копируете SQL из Запрос2 (без завершающего ";") и вставляете в основной запрос так: FROM (SELECT...) As Запрос2... После этого Запрос2 можно удалить из БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 09:38 |
|
Запрос с группировкой по нескольким таблицам. Проблема - в поле с суммой, суммирует линее
|
|||
---|---|---|---|
#18+
Анатолий, спасибо! Я почти у цели, с дополнительным запросом всё работает, но когда делаю подзапрос, выдаёт ошибку синтаксиса FROM.... Если вас не затруднит, скажите в чем тут моя ошибка? SELECT Труба.Дата_поступления, Труба.Место_отправки, Труба.Подряд, Труба.[Акт ВК], Труба.[№_трубы], Труба.Длина, Труба.Диаметр, Труба.Стенка, Труба.Тоннаж, Труба.Паспорт, Труба.Завод, ГО.[№_отвода], ГО.Градус, БТС.[№_плети], Вывоз.Дата AS [Дата вывоза], Count(Резка.Дата) AS [Count-Дата], Запрос1.[Min-Дата_сварки], Запрос1.[Sum-Длина] FROM (SELECT Min(Монтаж.Дата_сварки) AS [Min-Дата_сварки], Монтаж.[№_трубы], Sum(Монтаж.Длина) AS [Длина] FROM Труба INNER JOIN Монтаж ON Труба.[№_трубы] = Монтаж.[№_трубы] GROUP BY Монтаж.[№_трубы]) AS Запрос1 (((((Труба LEFT JOIN Вывоз ON Труба.[№_трубы] = Вывоз.[№_трубы]) LEFT JOIN БТС ON Труба.[№_трубы] = БТС.[№_трубы]) LEFT JOIN ГО ON Труба.[№_трубы] = ГО.[№_трубы]) LEFT JOIN Монтаж ON Труба.[№_трубы] = Монтаж.[№_трубы]) LEFT JOIN Резка ON Труба.[№_трубы] = Резка.[№_трубы]) LEFT JOIN Запрос1 ON Труба.[№_трубы] = Запрос1.[№_трубы] GROUP BY Труба.Дата_поступления, Труба.Место_отправки, Труба.Подряд, Труба.[Акт ВК], Труба.[№_трубы], Труба.Длина, Труба.Диаметр, Труба.Стенка, Труба.Тоннаж, Труба.Паспорт, Труба.Завод, ГО.[№_отвода], ГО.Градус, БТС.[№_плети], Вывоз.Дата, Запрос1.[Min-Дата_сварки], Запрос1.[Sum-Длина] ORDER BY Труба.Дата_поступления DESC , Труба.Стенка; ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 10:18 |
|
Запрос с группировкой по нескольким таблицам. Проблема - в поле с суммой, суммирует линее
|
|||
---|---|---|---|
#18+
Артём С., сначала создаете Запрос1 Код: sql 1. 2. 3. 4. 5.
прицепляете Запрос1 к основному Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
затем, если захотите Код: sql 1.
перепишите на Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 10:56 |
|
Запрос с группировкой по нескольким таблицам. Проблема - в поле с суммой, суммирует линее
|
|||
---|---|---|---|
#18+
Всё получилось! Всё работает в итоге получился код: SELECT Труба.Дата_поступления, Труба.Место_отправки, Труба.Подряд, Труба.[Акт ВК], Труба.[№_трубы], Труба.Длина, Труба.Диаметр, Труба.Стенка, Труба.Тоннаж, Труба.Паспорт, Труба.Завод, ГО.[№_отвода], ГО.Градус, БТС.[№_плети], Вывоз.Дата AS [Дата вывоза], Count(Резка.Дата) AS [Count-Дата], Запрос1.[Min-Дата_сварки], Запрос1.[Sum-Длина] FROM (((((Труба LEFT JOIN Вывоз ON Труба.[№_трубы] = Вывоз.[№_трубы]) LEFT JOIN БТС ON Труба.[№_трубы] = БТС.[№_трубы]) LEFT JOIN ГО ON Труба.[№_трубы] = ГО.[№_трубы]) LEFT JOIN Монтаж ON Труба.[№_трубы] = Монтаж.[№_трубы]) LEFT JOIN Резка ON Труба.[№_трубы] = Резка.[№_трубы]) LEFT JOIN (SELECT Min(Монтаж.Дата_сварки) AS [Min-Дата_сварки], Монтаж.[№_трубы], Sum(Монтаж.Длина) AS [Sum-Длина] FROM Труба INNER JOIN Монтаж ON Труба.[№_трубы] = Монтаж.[№_трубы] GROUP BY Монтаж.[№_трубы]) AS Запрос1 ON Труба.[№_трубы] = Запрос1.[№_трубы] GROUP BY Труба.Дата_поступления, Труба.Место_отправки, Труба.Подряд, Труба.[Акт ВК], Труба.[№_трубы], Труба.Длина, Труба.Диаметр, Труба.Стенка, Труба.Тоннаж, Труба.Паспорт, Труба.Завод, ГО.[№_отвода], ГО.Градус, БТС.[№_плети], Вывоз.Дата, Запрос1.[Min-Дата_сварки], Запрос1.[Sum-Длина] ORDER BY Труба.Дата_поступления DESC , Труба.Стенка; Спасибо за помощь и потраченное на меня время! Вы все очень помогли! :) Удачи! ... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 11:06 |
|
Запрос с группировкой по нескольким таблицам. Проблема - в поле с суммой, суммирует линее
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.07.2017, 11:15 |
|
|
start [/forum/topic.php?fid=45&msg=39492136&tid=1612251]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 147ms |
0 / 0 |