Помогите с запросом Having

seva2

Партнер PHPClub.ru
Помогите с запросом Having

PHP:
"select sr.*, SUM(num) as n from products_sklad_rashod as sr, products_sklad_sbor as ps where sr.model='".$model."'   and sr.`order`=ps.zakaz ".$d_ysl." group by sr.`order` having (SUM(num)<0 or sr.type=1)  order by ps.date desc  limit ".$_POST['limit']."
having (SUM(num)<0 or sr.type=1)

Вот конкретно это условие не выполняется, надо выташить значения у которых SUM(num)<0 или! sr.type=1

Подскажите пожалуйста где ошибка?
 

Gas

может по одной?
почему ты решил что в запросе ошибка?

p.s. limit ".$_POST['limit'] - и почитай это
 

Апокалипсис

тех дир matras.ru
seva2
запросы вначале нужно обрабатывать в пхпадмине или в консоле а потом уже в код постить.
зы: с 2005 года может прочтёшь phpfaq ?
 

seva2

Партнер PHPClub.ru
Разобрался в чем проблема:
group by sr.`order` для sr.type=1 у всех значение order=0. Поэтому они и не выводятся...

Подскажите как изменить запрос?
 

Gas

может по одной?
лично я не понял что тебе нужно, приведи по 5 строк из таблиц (только нужные поля) и результат который получаешь сейчас и который нужно получить.
 

seva2

Партнер PHPClub.ru
order type num model
1 2 а
2 0 -2 а
1 2 а
3 0 -1 а
3 0 -1 а
Так вот, мне нужно вывести где type = 0 и SUM(NUM)<0

И все где type=1

Причем групируя по order

Спасибо огромное
 

Gas

может по одной?
ну что ты будешь делать :), ожидаемого результата так и не привёл.
У тебя идёт группировка, что значит type = 0 или 1? это любое значение из группы или все значения. При сравнении type=1 нужна группировка или просто выбрать все записи?

Если
order type num model
1 2 0 а
1 1 1 а
2 0 -2 а
2 0 -1 а
3 1 -1 а
4 1 1 а
4 1 -1 а
4 0 1 а

нужно получить такой результат или нет?
1 1 1 а
2 0 -2 а
3 1 -1 а
4 1 1 а
4 1 -1 а
 

seva2

Партнер PHPClub.ru
order type num model
пусто 2 0 а
пусто 2 1 а
2 1 -2 а
2 1 -1 а
3 1 -1 а
4 1 1 а
4 1 -1 а
4 1 1 а

Результат следующий
пусто 2 0 а
пусто 2 1 а
2 1 -3 а
3 1 -1 а

То есть где type=2 выводятся все
где type=1 групируется по полю order и берется сумма списаний(NUM) и выводится то что меньше нуля
 

Gas

может по одной?
нужно склеить 2 запроса через union.
один с группировкой, другой без, только в каждом задать в where условия на необходимый type
 
Сверху