aliansu muże użyć ponieważ to jest coś tekiego "if(s.special_statsus, s.special_price, p.price) as real_price", wiec alians nie jest tutaj tak sobie.
hm jesli wszstkie wyniki pogrupuje wedle p.product_id to nie wpłynie to w żaden sposób mi na wyniki, tz zwrócone zostaną takie same rekordy, jak wtedy gdybym nie użył GROUP by?
nospor użyte z twojej strony zapytanie:
<?php
set @nr = 0, @id=5, @idprev = 0,@idprevfound=0, @idnext=0,@idnextfound=0;
SELECT @nr:=@nr+1,
if(id<>@id and not @idprevfound, @idprev := id,if(@idprevfound,null,@idprevfound:=1)),
if(id=@id, @idnextfound := 1,if(@idnextfound and not @idnext,@idnext := id, null)) FROM tabela1 order by pole;
zmodyfikowane:
set @nr = 0, @id=5, @idprev = 0,@idprevfound=0, @idnext=0,@idnextfound=0;
SELECT if(s.promotion_status, s.promotion_price, p.promotion_price) as real_price @nr:=@nr+1,
if(id<>@id and not @idprevfound, @idprev := id,if(@idprevfound,null,@idprevfound:=1)),
if(id
=@id
, @idnextfound
:= 1
,if(@idnextfound and not
@idnext
,@idnext
:= id
, null)) FROM product p
join left
... order by real_price
; ?>
Właśnie też nie zwraca mi dobrych wyników (tylko w momencie kiedy sortowanie jest po real_price, w kazdym innym wypadku, działa dobrze), jeśli, chociaz tutaj juz nie było użytego real_prce w WHERE tylko, a jedynie w ORDER by, dziwne...