Web_Scripti adlı üyeden alıntı: mesajı görüntüle
Merhaba hocam,

öncelikle çok teşekkürler çok uğraşmışsın ama tam anlatamadım galiba.

örneğin yas1=1 ve yas2=3 olan bir sorgu yapılcak.

aynen senin sorgu alttaki gibi kopyaladım.

SELECT * FROM oyuncaklar WHERE yas1 <= 1 AND yas2 >= 3 ORDER BY ((yas1+yas2) - (1+3)) ASC

ürünlerden yas1=0 ve yas2=3 olan için order by : 0+3 - 1+3
ürünlerden yas1=1 ve yas2=3 olan için order by : 1+3 - 1+3

üstteki - olduğu için seninkinden daha küçük bir değere ulaşıyor. Bunu en yakın sayı rakamlarıyla örnek verdim. Yoksa yas1=0, yas2=18 olacak bir ürün olabilirdi.
evet ben onu yazarken düşünmüştüm fakat benzer bir örnek bulamamıştım. öyle bir durumda -1 ile çarpmanız lazım. if statement lazım yani onu bulayım hemen ama genel mantık o şekilde yani.

Edit: ORDER BY (IF ((((yas1+yas2) - (x+y)) as uzaklik) < 0) THEN uzaklik * -1 ELSE uzaklik END) ASC bu tarz bir şey olacak yani ama syntax'dan tam emin değilim.

Edit2: Şunu deneyin hocam ORDER BY kısmı yerine
IF ((yas1+yas2) - (x+y)) AS s >= 0 THEN (ORDER BY s ASC) ELSE (ORDER BY (s * -1) ASC) END
Ya da biraz daha iyi hali çalışırsa şu:

ORDER BY (IF ((yas1+yas2) - (x+y)) AS s >= 0 THEN (s) ELSE (s * -1) END) ASC