0 / 0 / 0
Регистрация: 15.03.2015
Сообщений: 14

Sql запрос работает неверно

29.03.2015, 11:39. Показов 613. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день! написала SQL запрос
SQL
1
2
3
4
5
6
7
8
9
10
SELECT
продукция.код, продукция.наименование,
 
SUM (поступление.колличество )  AS приход,
SUM (продажи.колличество) AS расход,
SUM (  поступление.колличество - продажи.колличество) AS остаток
FROM  продукция,поступление, продажи
WHERE продукция.код = поступление.код_товара AND   продукция.код = продажи.код_товара
GROUP BY   продукция.код, продукция.наименование
ORDER BY   SUM (  поступление.колличество - продажи.колличество)
этот запрос должен выдать 5 полей:
1. код
2. наименование товара
3. сумма всех поступлений ( по каждому товару)
4. сумма всех расходов (по каждому товару)
5 . остаток ( разница между приходом и расходом по каждому товару)

все поля формируются но считается как то ужасно не верно(
допустим должно получится:
код | наименование| приход| расход | остаток|
1___|милки вей____|__22___|__3____|__ 19__|


а получается

код | наименование| приход| расход | остаток|
1___|милки вей____|__88___|__18___|__ 51__|

Помогите пожалуйста разобраться что не так!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.03.2015, 11:39
Ответы с готовыми решениями:

SQL запрос, работающий в MS SQL Menegment'e не работает в делфи
Требуется выполнить запрос по нажатию кнопки, запрос сначала написал в Microsoft SQL Managment, где и написал свою БД, там запрос работает,...

SQL-запрос работает в Access, а в Delphi не работает :'(
Две связанные таблицы 1к1. Вводим данные в поле одной таблицы и во второй должны быть сделаны теже изменения в одноимённом поле, т.е....

Не работает SQL запрос
Прошу подсказать в чем ошибка. Имеется таблица Citr, нужно подсчитать сколько записей находится в поле статья соответствуюших значению...

3
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
02.04.2015, 09:46
Цитата Сообщение от Alena_Ci Посмотреть сообщение
все поля формируются но считается как то ужасно не верно(
Потому, что в одном наборе используются противоречивые условия и через полное объединение всё в одну кучу намешано. Расчёт расхода и прихода надо выполнить в отдельных наборах и при этом не потерять строки. Затем, сформировать выходной набор, объединив исходные наборы.
Например, можно сделать так:
SQL
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
SELECT
  t1.код, t1.наименование, t2.приход, t3.расход, t2.приход - t3.расход AS остаток
FROM
  продукция AS t1
  LEFT OUTER JOIN
  (
  SELECT
    продукция.код, SUM(поступление.колличество) AS приход
  FROM
    продукция LEFT OUTER JOIN поступление
    ON
      продукция.код = поступление.код_товара
  GROUP BY
    продукция.код
  ) AS t2,
  ON
    t1.код = t2.код
  LEFT OUTER JOIN
  (
  SELECT
    продукция.код, SUM(продажи.колличество) AS расход
  FROM
    продукция LEFT OUTER JOIN продажи
    ON
      продукция.код = продажи.код_товара
  GROUP BY
    продукция.код
  ) AS t3
  ON
    t1.код = t3.код
ORDER BY
  остаток ASC
0
0 / 0 / 0
Регистрация: 15.03.2015
Сообщений: 14
02.04.2015, 11:00  [ТС]
при выполении запроса выпадает ошибка " ошибка синтаксиса в предложении FROM и переводит курсор на запятую здесь:
Цитата Сообщение от Mawrat Посмотреть сообщение
) AS t2,
убирала запятую тогда выпадала другая ошибка "неверный синтаксис..." вот здесь:
Цитата Сообщение от Mawrat Посмотреть сообщение
LEFT OUTER JOIN
* (
* SELECT
* * продукция.код, SUM(продажи.колличество) AS расход
* FROM
* * продукция LEFT OUTER JOIN продажи
* * ON
* * * продукция.код = продажи.код_товара
* GROUP BY
* * продукция.код
* ) AS t3
* ON
* * t1.код = t3.ко
не могу разобраться что не так(

Добавлено через 6 минут
Цитата Сообщение от Mawrat Посмотреть сообщение
Потому, что в одном наборе используются противоречивые условия и через полное объединение всё в одну кучу намешано. Расчёт расхода и прихода надо выполнить в отдельных наборах и при этом не потерять строки. Затем, сформировать выходной набор, объединив исходные наборы.
Например, можно сделать так:
Разобралась, спасибо! Немного не верный код
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 SELECT
 продукция.код,  продукция.наименование,  t2.приход, t3.расход, t2.приход - t3.расход AS остаток
FROM
 (продукция  LEFT  OUTER JOIN    (SELECT   продукция.код, SUM(поступление.колличество) AS приход
                                  FROM     продукция LEFT  OUTER JOIN поступление
                                   ON      продукция.код = поступление.код_товара
                                   GROUP BY    продукция.код )  AS t2  ON     продукция.код = t2.код )
 
 LEFT OUTER JOIN    (   SELECT     продукция.код, SUM(продажи.колличество) AS расход
                                    FROM     продукция LEFT OUTER JOIN продажи
                                     ON       продукция.код = продажи.код_товара
                                     GROUP BY     продукция.код   ) AS t3
ON
 продукция.код = t3.код
ORDER BY
  t2.приход - t3.расход ASC
0
 Аватар для Mawrat
13113 / 5894 / 1708
Регистрация: 19.09.2009
Сообщений: 8,809
02.04.2015, 11:51
В коде из моего предыдущего поста надо убрать запятую, о которой упоминалось. И в order by записать выражение вместо псевдонима. В таком виде должно быть правильно.
SQL
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
SELECT
  t1.код, t1.наименование, t2.приход, t3.расход, t2.приход - t3.расход AS остаток
FROM
  продукция AS t1
  LEFT OUTER JOIN
  (
  SELECT
    продукция.код, SUM(поступление.колличество) AS приход
  FROM
    продукция LEFT OUTER JOIN поступление
    ON
      продукция.код = поступление.код_товара
  GROUP BY
    продукция.код
  ) AS t2
  ON
    t1.код = t2.код
  LEFT OUTER JOIN
  (
  SELECT
    продукция.код, SUM(продажи.колличество) AS расход
  FROM
    продукция LEFT OUTER JOIN продажи
    ON
      продукция.код = продажи.код_товара
  GROUP BY
    продукция.код
  ) AS t3
  ON
    t1.код = t3.код
ORDER BY
  t2.приход - t3.расход ASC
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.04.2015, 11:51
Помогаю со студенческими работами здесь

не работает SQL запрос (
Здравствуйте, уважаемые прогеры! Наткнулся с одной проблемой, связанной с параметрическим запросом. При фильтрации данных программа...

Не работает sql запрос
Здравствуйте, помогите с запросом на добавление строк в таблицу. Суть в том что есть таблицы "Клиент", "Заказ",...

Не работает запрос SQL в делфи
На форме 3 разных RadioGroup. В зависимости от выбора Items'ов каждого RadioGroup'а присваиваются различные значения параметров a, b, c -...

Не работает запрос SQL where на дату
Доброго времени суток! Уже часа 2 сижу вообще не могу въехать чего "ему" от меня надо, кароче должен отфильтровывать по дате полученной с...

Работа с БД на Делфи, Sql запрос не работает
Только начала изучать. И тут заблуждала в Unit2 dbgrid2 не выводит цену.хотя с товаром все в порядке.И как положено сумму не считает в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мульти-тенантные БД с PostgreSQL Row Security
Codd 23.04.2025
Современные облачные сервисы и бизнес-приложения всё чаще обслуживают множество клиентов в рамках единой программной инфраструктуры. Эта архитектурная модель, известная как мульти-тенантность, стала. . .
Реализация конвейеров машинного обучения с Python и Scikit-learn
AI_Generated 23.04.2025
Мир данных вокруг нас растёт с каждым днём, и умение эффективно обрабатывать информацию стало необходимым навыком. Специалисты по машинному обучению ежедневно сталкиваются с задачами предобработки. . .
Контроллеры Kubernetes Ingress: Сравнительный анализ
Mr. Docker 23.04.2025
В Kubernetes управление входящим трафиком представляет собой одну из ключевых задач при построении масштабируемых и отказоустойчивых приложений. Ingress — это API-объект, который служит вратами. . .
Оптимизация кода Python с Cython и Numba
py-thonny 23.04.2025
Python прочно обосновался в топе языков программирования благодаря своей простоте и гибкости. Разработчики любят его за читабельность кода и богатую экосистему библиотек. Но у этой медали есть и. . .
Микросервис на Python с FastAPI и Docker
ArchitectMsa 23.04.2025
В эпоху облачных вычислений и растущей сложности программных продуктов классическая монолитная архитектура всё чаще уступает место новым подходам. Микросервисная архитектура становится фаворитом. . .
Создаем веб-приложение на Vue.js и Laravel
Reangularity 23.04.2025
Выбор правильного технологического стека определяет успех веб-проекта. Laravel и Vue. js формируют отличную комбинацию для создания современных приложений. Laravel — это PHP-фреймворк с элегантным. . .
Максимальная производительность C#: Span<T> и Memory<T>
stackOverflow 22.04.2025
Мир высоконагруженных приложений безжалостен к неэффективному коду. Каждая миллисекунда на счету, каждый выделенный байт памяти может стать причиной падения производительности. Разработчики на C#. . .
JWT аутентификация в Java
Javaican 21.04.2025
JWT (JSON Web Token) представляет собой открытый стандарт (RFC 7519), который определяет компактный и самодостаточный способ передачи информации между сторонами в виде JSON-объекта. Эта информация. . .
Спринты Agile: Планирование, выполнение, ревью и ретроспектива
EggHead 21.04.2025
Спринты — сердцевина Agile-методологии, позволяющая командам создавать работающий продукт итерационно, с постоянной проверкой гипотез и адаптацией к изменениям. В основе концепции спринтов лежит. . .
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров
Programma_Boinc 21.04.2025
Очередные открытия мега простых чисел, сделанные добровольцами с помощью домашних компьютеров. 3 марта 2025 года, в результате обобщенного поиска простых чисел Ферма в PrimeGrid был найден. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru