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

SQL во всех проявлениях - от ANSI-92 до TSQL.

Модераторы: Yurich, Absurd

Ответить
Ardarik
Сообщения: 5
Зарегистрирован: 25 янв 2013, 15:51

21 апр 2013, 19:03

Есть запрос.

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

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.`мин_остаток`
ошибку выдает
var_fj54j
Сообщения: 4
Зарегистрирован: 21 апр 2013, 20:43

21 апр 2013, 20:47

а на ошибку можно посмотреть?
Ardarik
Сообщения: 5
Зарегистрирован: 25 янв 2013, 15:51

21 апр 2013, 20:54

[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]
var_fj54j
Сообщения: 4
Зарегистрирован: 21 апр 2013, 20:43

21 апр 2013, 21:13

Переименуй таблицу Use. Из-за нее ошибка. Ибо в синтаксисе sql есть ключевое слово use.
Ardarik
Сообщения: 5
Зарегистрирован: 25 янв 2013, 15:51

22 апр 2013, 16:59

Неа. В кавычках можно. не в этом проблема
Хыиуду
Сообщения: 2388
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

23 апр 2013, 11:15

возможно, вместо where с агрегатными функциями типа sum надо использовать having?
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ardarik
Сообщения: 5
Зарегистрирован: 25 янв 2013, 15:51

24 апр 2013, 17:38

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

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.мин_остаток`.
Так не работает, что делать?
Ответить