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