Страница 1 из 1

Не получается переделать запрос

Добавлено: 21 апр 2013, 19:03
Ardarik
Есть запрос.

Код: Выделить всё

SELECT type.`Тип`, name.`Наименование` as `Наименование`, COALESCE((SELECT SUM(arrival.`Количество`) FROM arrival WHERE name.`id_наименование` = arrival.`Наименование`),0)-
COALESCE((SELECT SUM(`use`.`Количество`) FROM `use` WHERE name.`id_наименование` = `use`.`Наименование` ),0) AS Ostat FROM  name
LEFT OUTER JOIN   sklad.type ON name.`Тип` = type.`id_тип`
Запрос показывает остатки. В таблице name есть столбец минимальный остаток, как нужно составить запрос что бы вывелось только если остаток меньше мин_остатка?
Пробовал сразу после запроса писать

Код: Выделить всё

select type.`Тип`, name.`Наименование` ,Ostat 
from type, name where  Ostat<name.`мин_остаток`
ошибку выдает

Re: Не получается переделать запрос

Добавлено: 21 апр 2013, 20:47
var_fj54j
а на ошибку можно посмотреть?

Re: Не получается переделать запрос

Добавлено: 21 апр 2013, 20:54
Ardarik
[HTML]#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'elect type.`Тип`, name.`Наименование` ,Ostat from type, name wh' at line 4[/HTML]

Re: Не получается переделать запрос

Добавлено: 21 апр 2013, 21:13
var_fj54j
Переименуй таблицу Use. Из-за нее ошибка. Ибо в синтаксисе sql есть ключевое слово use.

Re: Не получается переделать запрос

Добавлено: 22 апр 2013, 16:59
Ardarik
Неа. В кавычках можно. не в этом проблема

Re: Не получается переделать запрос

Добавлено: 23 апр 2013, 11:15
Хыиуду
возможно, вместо where с агрегатными функциями типа sum надо использовать having?

Re: Не получается переделать запрос

Добавлено: 24 апр 2013, 17:38
Ardarik

Код: Выделить всё

SELECT type.`Тип`, name.`Наименование` as `Наименование`, COALESCE((SELECT SUM(arrival.`Количество`) FROM arrival WHERE name.`id_наименование` = arrival.`Наименование`),0)- 
COALESCE((SELECT SUM(`use`.`Количество`) FROM `use` WHERE name.`id_наименование` = `use`.`Наименование` ),0) AS Ostat FROM  name
LEFT OUTER JOIN   sklad.type ON name.`Тип` = type.`id_тип`
HAVING Ostat < 200
Вот так работает, Вместо 200 (последняя строка кода) мне нужно что бы было `name.мин_остаток`.
Так не работает, что делать?