Arama butonu
Bu konudaki kullanıcılar: 1 misafir
5
Cevap
391
Tıklama
0
Öne Çıkarma
Nasıl bir SQL cümlesi yazmalıyım
A
18 yıl
Yarbay
Konu Sahibi

Selamlar
Şimdi elimde bir tablo da 3 tane alan var diyelim a1 a2 a3. Yapmak istediğim de

a3 ün 2 olduğu ve a2 değerinin en büyük olduğu iki tane a1 değerini bul.Yani tablodaki en büyük iki a2 değerini seçecek tabi a3 ün 2 olduğu satırlardaki ve bu satırlardaki a1 değerlerini alacağım.Nasıl bir SQL sorgusu kullanmalıyım.

Teşekkürler



M
18 yıl
Yarbay

Php ile alacağını düşünerek şöyle bir kullanım yapabiliriz.

$sorgu=mysql_query("SELECT a1 FROM tabloadi WHERE a3='2' ORDER BY a2 DESC");

$birinci = mysql_result($sorgu,0);
$ikinci = mysql_result($sorgu,1);

Yok bunların iki tanesini php ile almak istemiyorum, SQL ile iki tane değer dönmesini istiyorum diyorsan.

SELECT a1 FROM tabloadi WHERE a3='2' ORDER BY a2 DESC LIMIT 0,2


Bu mesaja 1 cevap geldi.
A
18 yıl
Yarbay
Konu Sahibi

Çok teşekkür ederim.Evet php ile yapacağım.Buradaki 2 rakamı örnek içindi.DAha fazla rakam kullanabilirim.Onun için 2.SQL ile almam daha iyi olur.
Çok teşekkürler.


Bu mesaja 1 cevap geldi.
M
18 yıl
Yarbay

daha fazla kayıt alacaksanız

 
$sorgu=mysql_query("SELECT a1 FROM tabloadi WHERE a3='2' ORDER BY a2 DESC");
$kayitlar=mysql_fetch_array($sorgu);
for ($i=0;$i<10;$i++)
echo mysql_result($sorgu,$i);


Daha uygun olur.

Veya kaç tane alacağınızı sorguda belirleyip, while döngüsü kullanabilirsiniz.


$sorgu=mysql_query("SELECT a1 FROM tabloadi WHERE a3='2' ORDER BY a2 DESC LIMIT 0,2"); 
while ($kayitlar=mysql_fetch_array($sorgu))
echo $kayitlar[a1];



LIMIT 0,2 => Sıfırıncı kayıttan başla 2 tane kayıt al,
LIMIT 10,2 => Onuncu kayıttan başla 2 tane kayıt al şeklinde kullanılabilir.


Bu mesaja 1 cevap geldi.
U
18 yıl
Binbaşı

quote:

Orjinalden alıntı: MaviAteş

daha fazla kayıt alacaksanız

 
$sorgu=mysql_query("SELECT a1 FROM tabloadi WHERE a3='2' ORDER BY a2 DESC");
$kayitlar=mysql_fetch_array($sorgu);
for ($i=0;$i<10;$i++)
echo mysql_result($sorgu,$i);


Daha uygun olur.

Veya kaç tane alacağınızı sorguda belirleyip, while döngüsü kullanabilirsiniz.


$sorgu=mysql_query("SELECT a1 FROM tabloadi WHERE a3='2' ORDER BY a2 DESC LIMIT 0,2"); 
while ($kayitlar=mysql_fetch_array($sorgu))
echo $kayitlar[a1];



LIMIT 0,2 => Sıfırıncı kayıttan başla 2 tane kayıt al,
LIMIT 10,2 => Onuncu kayıttan başla 2 tane kayıt al şeklinde kullanılabilir.


$i = 38;
$sorgu=mysql_query("SELECT a1 FROM tabloadi WHERE a3='2' ORDER BY a2 DESC LIMIT $i");
...şeklinde, sorgunun içine değişkenle de gönderilebilir.

Bildiğim kadarıyla LIMIT için başlangıç parametresi vermezsek sıfırdan başlıyor.





< Bu mesaj bu kişi tarafından değiştirildi un.real -- 23 Kasım 2007; 23:52:14 >
Bu mesaja 1 cevap geldi.
A
18 yıl
Yarbay
Konu Sahibi

Herekese teşekkürler.Bir sorunum daha oldu.Elimdeki tabloda 2 tane alan var. a1 ve a2 olsun.Şimdi ben bu değerleri sql cümlesiyle tamamını alıyorum. SELECT * FROM tablo_adi diyerek.SQL bir kere sorgulama yaparak istediğim a1 değerindeki a2 değerini bulabilir miyim? Yani tek sorgu ile alacağım sonra php de istediğim a1 değerindekini bulduracağım.Bir nevi array tanımlaması gibi olacak.Nasıl yapabilirim?



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.