-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
Hayırlı akşamlar...
Standart sıralama biçimlerinin dışında, sorgu içinde şartlı bir sıralama yapmak için nasıl bir kod yapısı gerekir?
Netleştirmek için şöyle açayım;
Yerli ve ithal ürünlerin + indirimli ve indirimsiz ürünlerin karışık olarak listelendiği bir tablo düşünelim.
1) Tablonun en başında;
product_by='MADE IN TURKIYE' olan ürünlerin alfabetik olarak sıralanması,
hemen altında da
product_by='world' olan ürünlerin alfabetik olarak sıralanması,
2) Bu iki gruba ait ürünlerin ise kendi içinde;
product_discount='yes' olan ürünlerin önce
ve
product_price DESC ===> fiyatı en düşük olanın en üste olacak şekilde dizilmesi
NASIL SAĞLANABİLİR?
Şu linkteki örnekten yola çıkıp bir takım denemeler yaptım ama henüz netice alamadım.
https://stackoverflow.com/questions/3550942/can-you-add-an-if-statement-in-order-by
Çalışmayan ama beyin fırtınasını başlatabilecek bir deneme kodu;
...
ORDER BY
IF(product_by='MADE IN TURKIYE') DESC,
IF(product_discount='yes') DESC,
...
Biraz girift oldu farkındayım ama juniorlar için...
Üstadlar için değil...
Teşekkürler...
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
15.05.2015
-
Yaş/Cinsiyet
33 / E
-
Meslek
PHP Developer
-
Konum
İstanbul Avrupa
-
Ad Soyad
Ö** G**
-
Mesajlar
1207
-
Beğeniler
382 / 381
-
Ticaret
16, (%100)
BEYAZMASTER öncelikle sql sorgusu içinde if kullanımı şu şekilde oluyor.
IF(KOŞUL, DOĞRU, YANLIŞ)
Sizin yazdığınızı şöyle yapıp bi deneyebilir misiniz? Benim ki de bir fikir :)
ORDER BY
IF(product_by='MADE IN TURKIYE', "DESC", "null")
1 kişi bu mesajı beğendi.
Herkes yediğinden ikram eder..(Yavuz Sultan Selim)
emreyvz
.NET Core & Angular & PHP
Kullanıcı
-
Üyelik
19.04.2016
-
Yaş/Cinsiyet
28 / E
-
Meslek
Bilgisayar Mühendisi
-
Konum
İstanbul Anadolu
-
Ad Soyad
E** Y**
-
Mesajlar
691
-
Beğeniler
110 / 250
-
Ticaret
24, (%100)
1)
Tablonun en başında;
product_by='MADE IN TURKIYE' olan ürünlerin alfabetik olarak sıralanması,
hemen altında da
product_by='world' olan ürünlerin alfabetik olarak sıralanması,
Select * from products order by product_by ASC, urun_adi ASC;
2) Bu iki gruba ait ürünlerin ise kendi içinde;
product_discount='yes' olan ürünlerin önce
ve
product_price DESC ===> fiyatı en düşük olanın en üste olacak şekilde dizilmesi
(Önce Made in Türkiye en ucuz ve indirimli olanlar gelecek)
Select * from products order by product_by ASC, product_price ASC, product_discount DESC;
Kolay gelsin.
1 kişi bu mesajı beğendi.
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
ÖmerGünay adlı üyeden alıntı
BEYAZMASTER öncelikle sql sorgusu içinde if kullanımı şu şekilde oluyor.
IF(KOŞUL, DOĞRU, YANLIŞ)
Sizin yazdığınızı şöyle yapıp bi deneyebilir misiniz? Benim ki de bir fikir :)
ORDER BY
IF(product_by='MADE IN TURKIYE', "DESC", "null")
Öncelikle genel bilgiler ve paylaştığınız fikir için teşekkür ederim üstadım...
Aşırı yoğunluktan ancak şimdi deneme fırsatım oldu, maalesef çalışmadı...
Nazar boncuğu diyelim... :)
Zaman içerisinde denemeye devam...
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
emreyvz adlı üyeden alıntı
1)
Tablonun en başında;
product_by='MADE IN TURKIYE' olan ürünlerin alfabetik olarak sıralanması,
hemen altında da
product_by='world' olan ürünlerin alfabetik olarak sıralanması,
Select * from products order by product_by ASC, urun_adi ASC;
2) Bu iki gruba ait ürünlerin ise kendi içinde;
product_discount='yes' olan ürünlerin önce
ve
product_price DESC ===> fiyatı en düşük olanın en üste olacak şekilde dizilmesi
(Önce Made in Türkiye en ucuz ve indirimli olanlar gelecek)
Select * from products order by product_by ASC, product_price ASC, product_discount DESC;
Kolay gelsin.
Üstadım aşırı yoğunluktan ancak irdeleyebildim mesajınızı...
Paylaştığınız mantığı çok iyi anladım;
Verilerin alfabetik ve numerik dizilimlerinden yaralanmak çok yerinde...
Fakat bu sıralamanın yeterli olamayacağı durumlar için bir çözüm geliştirmeye çalıştım...
Örneğin;
made in azerbaycan
made in japonya
made in pakistan
made in TÜRKİYE
made in uruguay
made in world
Normalde üstteki gibi olan alfabetik bir sıralamayı
ORDER BY KULLANARAK akttaki düzende dizilmesini nasıl sağlarız üstad;
made in TÜRKİYE
made in azerbaycan
made in pakistan
made in japonya
made in uruguay
made in world
(İlk mesajımda böyle bir örnek vermem gerekirdi, daha açıklayıcı olurdu farkındayım.)
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
emreyvz tamamlayıcı katkınız için teşekkür ederim üstadım.
Lakin kodu an itibari ile anlamış değilim, zamanla çözmeye çalışacağım...
Hayırlı akşamlar, kolaylıklar dilerim.
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
13.06.2019
-
Yaş/Cinsiyet
42 / E
-
Meslek
Serbest
-
Konum
İstanbul Anadolu
-
Ad Soyad
C** E**
-
Mesajlar
367
-
Beğeniler
69 / 147
-
Ticaret
0, (%0)
Bunu neden klasik query gönderimi ile yapmıyorsunuz.
İf(koşullar)
$Sira= "desc"
$Query="sorgular"
Elseif(koşullar)
$Sira="asc"
$Query="sorgular"
"Select ..... Where $Query $Sira "
Gibi..bu kullanım daha hoş olur. Genelde sorguda if kullanımı yavaşlatır(kayıt sayısına göre drğişir, minimal olsada farkeder).
Sorguyu dışarıda halledip göndermek en mantıklı seçim olur diye düşünüyorum.
Edit: where koşulunuzun sonuna order by product asc/desc isteğe göre a/z z/a dizilimi yapabilirsiniz. Sorguda sıkıntınız yoksa order by ile dizilimi seçin yeterli. Tabi doğru anladıysam :)
1 kişi bu mesajı beğendi.
İmkansız olduğunu düşünürsen hiç birşey başaramazsın.
-
Üyelik
04.02.2020
-
Yaş/Cinsiyet
43 / E
-
Meslek
Yazılım...
-
Konum
Diğer
-
Ad Soyad
O** B**
-
Mesajlar
597
-
Beğeniler
154 / 153
-
Ticaret
0, (%0)
AzveNet cevabınız için teşekkür ederim üstadım.
"Sorguyu dışarıda halledip göndermek en mantıklı seçim olur diye düşünüyorum."Kulağa hoş geliyor...
Fakat kasdettiğiniz yöntemi tam anladığımı söyleyemem.
Vaktiniz olursa tam bir kod örneği olarak paylaşabilir misiniz mümkünse...
ÖNCE "İYİ,DOĞRU,GÜZEL BİR İNSAN" OLMAK (VEFA,TEVAZZU,NAİFLİK,SAYGI,...) GEREK!
Sonra wm oluruz.
-
Üyelik
13.06.2019
-
Yaş/Cinsiyet
42 / E
-
Meslek
Serbest
-
Konum
İstanbul Anadolu
-
Ad Soyad
C** E**
-
Mesajlar
367
-
Beğeniler
69 / 147
-
Ticaret
0, (%0)
Aslında tam olarak onu yapmıştım yukarıda üstadım :)
Uzun uzun yazmadım sadece.
İf ($yerlimali=="evet" {
$sorgu = " and product_by = 'made in TÜRKİYE' ";
$dizilim = " order by product_by desc";
}Elsr{
$sorgu = " and product_by = 'made in ITALY' ";
$dizilim = " order by product_by asc";
}
$anasorgu= select * from urunler where status = 1 $sorgu . $dizilim
Şeklinde düşünün. Standart where koşulu status(ben salladim bunu) ardına arama sorgumuzu ve dizilim şeklimizi if den aldığımız haliyle koyup değişen bir sorgu üretmiş oluyoruz. Buradaki $sorgu ve $dizilimi sabitte yapabilirsiniz isterseniz. Veya bir yerden alabilirsiniz bu değerleri. Bu şekilde istenen ülke ürününü alırız. Desc / asc ilede dizilim şeklini seçiyoruz.
1 kişi bu mesajı beğendi.
İmkansız olduğunu düşünürsen hiç birşey başaramazsın.