lostyazilim
tr.link

group by ve order by nasıl birlikte kullanırım?

8 Mesajlar 3.038 Okunma
acebozum
tr.link

jnzry jnzry WM Aracı Kullanıcı
  • Üyelik 28.06.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Avusturya
  • Ad Soyad B** U**
  • Mesajlar 31
  • Beğeniler 4 / 3
  • Ticaret 4, (%75)
bir haber sayfası yazıyorum, anasayfada tüm kategorilerin haberleri ayı ayrı alt alta listelenmesini istiyorum aklıma bir tek group by ve order by ile yapabileceğim geldi. örneğin group by ile ayrı ayrı listelicem hepsinin içinde son 9 tane haber yazılacak.

- Gündem -
9. gündem haberi
8. gündem haberi
...
.
..

- Spor -
9.spor haberi
8.spor haberi
...
.
..
.
.

şeklinde listeletmem gerekiyor nasıl yapabilirim ?

(veritabanı: haberler tablosu= haber_id,kategori,baslik,haber,resim...)
 

 

elektronikssl
webimgo

Ninja Ninja Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 13.07.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad Ö** S**
  • Mesajlar 140
  • Beğeniler 15 / 34
  • Ticaret 11, (%100)
Yapı bu şekilde;

group by;
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;


order by;
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC


Zaten bunlar internette mevcut şeyler...
 

 

jnzry jnzry WM Aracı Kullanıcı
  • Üyelik 28.06.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Avusturya
  • Ad Soyad B** U**
  • Mesajlar 31
  • Beğeniler 4 / 3
  • Ticaret 4, (%75)

Ninja adlı üyeden alıntı

Yapı bu şekilde;

group by;
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;


order by;
SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC


Zaten bunlar internette mevcut şeyler...


bunları birleştirerek çıktı alamadım
 

 

Ninja Ninja Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 13.07.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek ...
  • Konum Diğer
  • Ad Soyad Ö** S**
  • Mesajlar 140
  • Beğeniler 15 / 34
  • Ticaret 11, (%100)

jnzry adlı üyeden alıntı

bunları birleştirerek çıktı alamadım


Ben tam olarak ne yapmak istediğini anlamadım.
 

 

wmaraci
wmaraci

jnzry jnzry WM Aracı Kullanıcı
  • Üyelik 28.06.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Avusturya
  • Ad Soyad B** U**
  • Mesajlar 31
  • Beğeniler 4 / 3
  • Ticaret 4, (%75)
Anasayfada tüm kategorilere ait haberleri ayrı ayrı yazdırmak istiyorum şu şekilde:

-Dünyadan haberler-
Haber: Türkiye'de seçimler başladı
Haber: ABD'de kriz
Haber: .....

-Spor-
Haber: RTE hattrick yaptı
Haber: Galatasaray transfer yaptı
.....
....

bu şekilde tüm kategorileri yazdırmak istiyorum anasayfada.

yani 40 tane spor haberi varsa SON 9 tanesini seçip spor başlığı altında yazdırcam. Bunun için hem sondan başa doğru sıralamam lazım hem de haberleri gruplamam lazım .
 

 

tiwaly tiwaly NodeJS / PHP / NoSQL Kullanıcı
  • Üyelik 10.10.2013
  • Yaş/Cinsiyet 34 / E
  • Meslek Yazılımcı
  • Konum İzmir
  • Ad Soyad i** A**
  • Mesajlar 363
  • Beğeniler 135 / 104
  • Ticaret 7, (%100)
Select * from tablo group by sütun order by sütun
önce group gelmeli.
jnzry

kişi bu mesajı beğendi.

jnzry jnzry WM Aracı Kullanıcı
  • Üyelik 28.06.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Öğrenci
  • Konum Avusturya
  • Ad Soyad B** U**
  • Mesajlar 31
  • Beğeniler 4 / 3
  • Ticaret 4, (%75)

tiwaly adlı üyeden alıntı

Select * from tablo group by sütun order by sütun
önce group gelmeli.


hocam dediğiniz şekilde denemiştim fakat her gruptan 1 kayıt (her gruptan id'si en küçük olan) yazdırdı.

$habersql1 = mysql_query("select * from haberler group by kategori order by haber_id desc");
while ($haberoku1=mysql_fetch_array($habersql1))
{

echo "
".$haberoku1['haber']."

";
}
 

 

MertKoseoglu MertKoseoglu Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 12.07.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek x
  • Konum Ankara
  • Ad Soyad M** K**
  • Mesajlar 659
  • Beğeniler 120 / 168
  • Ticaret 3, (%100)

jnzry adlı üyeden alıntı

hocam dediğiniz şekilde denemiştim fakat her gruptan 1 kayıt (her gruptan id'si en küçük olan) yazdırdı.

$habersql1 = mysql_query("select * from haberler group by kategori order by haber_id desc");
while ($haberoku1=mysql_fetch_array($habersql1))
{

echo "
".$haberoku1['haber']."

";
}


Merhaba,

Sen burada sadece kategorilerii gruplandırmışsın. Yapman gereken kategorilere ait içerikleri de gruplandırmak.

GROUP BY ile birden fazla alan kullanımı

GROUP BY ifadesinden sonra birden fazla alan kullanabiliriz. Örneğin kayıtları önce ülkelere göre gruplayıp sonra her bir grubu kendi içinde şehirlere göre gruplamak istesek:

SELECT ülke, şehir FROM `kisiler` GROUP BY ülke, şehir

Örnekten de anlaşılacağı gibi, detaylar bazen insanı deli edebiliyor.

Kaynak : http://www.hrzafer.com/sql-15-group-by-ifadesi

Kolay gelsin.
jnzry

kişi bu mesajı beğendi.

wmaraci
wmaraci
Konuyu toplam 1 kişi okuyor. (0 kullanıcı ve 1 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al