powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь в MySQL запросе
7 сообщений из 7, страница 1 из 1
Нужна помощь в MySQL запросе
    #39797801
Добрый день!
Версия клиента базы данных: libmysql - 5.5.30

Не понимаю, почему так происходит, вот исходный зарос:


set @a := 0;

SELECT


`Date_Receipt_Request`, RequestWork.`Task_Request`,

`Product_items`.Name_product, `WorkAddress`, `Composition_request`.Quantity_actually,

IF(Composition_request.direction = 'OUT',

@a := @a + `Composition_request`.Quantity_actually * -1,

@a := @a + `Composition_request`.Quantity_actually ) AS Saleable

FROM

`RequestWork`, `Composition_request`, `Product_items` , (Select @a = 0) zz


WHERE `RequestWork`.`Task_Request` = `Composition_request`.Task_request And `RequestWork`.`Num_Work_Request` = `Composition_request`.Work_request And

`Composition_request`.Id_product = `Product_items`.id And (`Product_items` .id = 24)

Работает нормально, результат верный. Решил сделать сортировку, добавил Order By по полю.


set @a := 0;

SELECT


`Date_Receipt_Request`, RequestWork.`Task_Request`,

`Product_items`.Name_product, `WorkAddress`, `Composition_request`.Quantity_actually,

IF(Composition_request.direction = 'OUT',

@a := @a + `Composition_request`.Quantity_actually * -1,

@a := @a + `Composition_request`.Quantity_actually ) AS Saleable

FROM

`RequestWork`, `Composition_request`, `Product_items` , (Select @a = 0) zz


WHERE `RequestWork`.`Task_Request` = `Composition_request`.Task_request And `RequestWork`.`Num_Work_Request` = `Composition_request`.Work_request And

`Composition_request`.Id_product = `Product_items`.id And (`Product_items` .id = 24) Order By `Date_Receipt_Request`

При выполнении получаются другие данные. Подскажите, почему данные меняются, ведь в переменную @a без разницы (по идеи) в какой последовательности прибавлять или отнимать значения.
...
Рейтинг: 0 / 0
Нужна помощь в MySQL запросе
    #39797815
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Родионовисходный запрос:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
set  @a := 0;
SELECT `Date_Receipt_Request`, 
       RequestWork.`Task_Request`,
       `Product_items`.Name_product, 
       `WorkAddress`,  
       `Composition_request`.Quantity_actually,
       IF(Composition_request.direction = 'OUT',
           @a := @a + `Composition_request`.Quantity_actually * -1,   
           @a := @a + `Composition_request`.Quantity_actually ) AS Saleable 
FROM `RequestWork`, 
     `Composition_request`, 
     `Product_items` , 
     (Select  @a =  0) zz
WHERE `RequestWork`.`Task_Request` = `Composition_request`.Task_request 
  And `RequestWork`.`Num_Work_Request` =  `Composition_request`.Work_request 
  And `Composition_request`.Id_product = `Product_items`.id 
  And (`Product_items` .id = 24) 



Работает нормально, результат верный.
То, что результат верен - случайность. По причине отсутствия сортировки.

Павел РодионовРешил сделать сортировку, добавил Order By по полю.Решение верное. С точностью до выбора выражения сортировки.

Павел РодионовПри выполнении получаются другие данные.Ожидаемо. Но хотя бы теперь результат детерминирован с точностью до группы по выражению сортировки.
...
Рейтинг: 0 / 0
Нужна помощь в MySQL запросе
    #39797822
Подскажите, почему результат неверный? Условие присвоение переменной неверное? Возможно я ошибаюсь, думал, что в запросе просто перебираются все записи и с учетом значения определенного поля значение в переменную записываются по разному.
Подскажите куда копать.
...
Рейтинг: 0 / 0
Нужна помощь в MySQL запросе
    #39797838
Akina,

Проверил на 7 позициях, без сортировки работает (проверял в ручную) нормально. Но как только появляется сортировка данные в переменной @a непонятные (. Помогите с запросом
...
Рейтинг: 0 / 0
Нужна помощь в MySQL запросе
    #39797843
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Родионов, DS правда думаете, что, не видя ни исходной структуры, ни примера данных, ни алгоритма расчёта, ни желаемого и получаемого результата, кто-то что-то сможет сказать больше общих соображений?

Павел РодионовПроверил на 7 позициях, без сортировки работает (проверял в ручную) нормально.Повторю: это СЛУЧАЙНОСТЬ. В следующий раз записи могут обрабатываться в ином порядке - и соответственно с иным конечным результатом.
...
Рейтинг: 0 / 0
Нужна помощь в MySQL запросе
    #39797846
Я новичок в этом, прошу не судить предвзято. Желаемый результат это сумма всех полей `Composition_request`.Quantity_actually (тип int) с учетом значения поля Composition_request.direction (тип varchar(3), тут всего два значения 'IN' и 'OUT', если IN. то прибавить, если OUT отнять значения поля `Composition_request`.Quantity_actually).
...
Рейтинг: 0 / 0
Нужна помощь в MySQL запросе
    #39797852
Для фиксации сортировки сделал сортировку на полю id (тип int, AUTO_INCREMENT)

set @a := 0;
SELECT `Date_Receipt_Request`,
RequestWork.`Task_Request`,
`Product_items`.Name_product,
`WorkAddress`,
`Composition_request`.Quantity_actually,
IF(Composition_request.direction = 'OUT',
@a := @a + `Composition_request`.Quantity_actually * -1,
@a := @a + `Composition_request`.Quantity_actually ) AS Saleable
FROM `RequestWork`,
`Composition_request`,
`Product_items` ,
(Select @a = 0) zz
WHERE `RequestWork`.`Task_Request` = `Composition_request`.Task_request
And `RequestWork`.`Num_Work_Request` = `Composition_request`.Work_request
And `Composition_request`.Id_product = `Product_items`.id
And (`Product_items` .id = 24)
And `Composition_request`.Quantity_actually > 0
ORDER BY RequestWork.`id`

Такая конструкция будет верна?
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь в MySQL запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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