|
Нужна помощь в MySQL запросе
|
|||
---|---|---|---|
#18+
Добрый день! Версия клиента базы данных: 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 без разницы (по идеи) в какой последовательности прибавлять или отнимать значения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2019, 11:26 |
|
Нужна помощь в MySQL запросе
|
|||
---|---|---|---|
#18+
Павел Родионовисходный запрос: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
Работает нормально, результат верный. То, что результат верен - случайность. По причине отсутствия сортировки. Павел РодионовРешил сделать сортировку, добавил Order By по полю.Решение верное. С точностью до выбора выражения сортировки. Павел РодионовПри выполнении получаются другие данные.Ожидаемо. Но хотя бы теперь результат детерминирован с точностью до группы по выражению сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2019, 12:35 |
|
Нужна помощь в MySQL запросе
|
|||
---|---|---|---|
#18+
Подскажите, почему результат неверный? Условие присвоение переменной неверное? Возможно я ошибаюсь, думал, что в запросе просто перебираются все записи и с учетом значения определенного поля значение в переменную записываются по разному. Подскажите куда копать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2019, 12:53 |
|
Нужна помощь в MySQL запросе
|
|||
---|---|---|---|
#18+
Akina, Проверил на 7 позициях, без сортировки работает (проверял в ручную) нормально. Но как только появляется сортировка данные в переменной @a непонятные (. Помогите с запросом ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2019, 14:05 |
|
Нужна помощь в MySQL запросе
|
|||
---|---|---|---|
#18+
Павел Родионов, DS правда думаете, что, не видя ни исходной структуры, ни примера данных, ни алгоритма расчёта, ни желаемого и получаемого результата, кто-то что-то сможет сказать больше общих соображений? Павел РодионовПроверил на 7 позициях, без сортировки работает (проверял в ручную) нормально.Повторю: это СЛУЧАЙНОСТЬ. В следующий раз записи могут обрабатываться в ином порядке - и соответственно с иным конечным результатом. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2019, 14:35 |
|
Нужна помощь в MySQL запросе
|
|||
---|---|---|---|
#18+
Я новичок в этом, прошу не судить предвзято. Желаемый результат это сумма всех полей `Composition_request`.Quantity_actually (тип int) с учетом значения поля Composition_request.direction (тип varchar(3), тут всего два значения 'IN' и 'OUT', если IN. то прибавить, если OUT отнять значения поля `Composition_request`.Quantity_actually). ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2019, 14:51 |
|
Нужна помощь в MySQL запросе
|
|||
---|---|---|---|
#18+
Для фиксации сортировки сделал сортировку на полю 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` Такая конструкция будет верна? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.04.2019, 15:03 |
|
|
start [/forum/topic.php?fid=47&fpage=37&tid=1829199]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 300ms |
total: | 428ms |
0 / 0 |