lostyazilim
tr.link

Çekilen değerin birini zorla, diğerini rastgele.

20 Mesajlar 2.725 Okunma
acebozum
tr.link

SefaCanDemir SefaCanDemir Front-End Developer Kullanıcı
  • Üyelik 10.11.2013
  • Yaş/Cinsiyet 27 / E
  • Meslek Front-End Developer
  • Konum Adana
  • Ad Soyad S** D**
  • Mesajlar 1345
  • Beğeniler 234 / 472
  • Ticaret 12, (%100)
Ne yapmak istediğinizi anlasam yardımcı olacağım.
 

 

sefacandemir.com.tr
elektronikssl
webimgo

0ktay 0ktay strdex Kullanıcı
  • Üyelik 01.02.2018
  • Yaş/Cinsiyet 26 / E
  • Meslek Yazılım öğrencisi
  • Konum Antalya
  • Ad Soyad O** Ş**
  • Mesajlar 603
  • Beğeniler 25 / 155
  • Ticaret 2, (%100)
Anladığım kadarıyla bişeyler karaladım ama :)



$sql = mysql_query("select sutun_adi from tablo_adi");
while($sonuc = mysql_fetch_row($sql) ){
echo $sonuc[0]; // birinci değer sabit
$oktay = rand(1,3); // $a değişkenine her döngüde 1 ile 3 arasında dönüyor eğer senin değerin 1 ila 3'ten fazla ile 3' yerine count ile veriyi saydırabilir değişkene atayıp 3'ün yerine yazabilirsin verdiğin sayıya göre değer döndürecektir.
echo $sonuc[$oktay];
}
// eğer sütunda 3'den fazla satır varsa döngüyü 3 ile sınırlandırmalısın.
 

 

Eğitimin pahalı olduğunu düşünüyorsanız, cehaletin bedelini hesaplayın.

hsntngr hsntngr Kontör at Kullanıcı
  • Üyelik 21.09.2016
  • Yaş/Cinsiyet 31 / E
  • Meslek Full Stack Developer
  • Konum İstanbul Avrupa
  • Ad Soyad H** T**
  • Mesajlar 1155
  • Beğeniler 99 / 327
  • Ticaret 3, (%100)
hocam daha açık bir şekilde yazar mısınız
 

 

srhtycl srhtycl IBM Ambassador Kullanıcı
  • Üyelik 13.04.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Software Engineer
  • Konum İstanbul Anadolu
  • Ad Soyad S** Y**
  • Mesajlar 501
  • Beğeniler 86 / 124
  • Ticaret 12, (%100)
Doğru anladıysam aynı tablodan 4 satır veri döndürmek istiyorsunuz. Bu 4 veriden birinde sütun değerini siz veriyorsunuz ve ona göre satır gelmesini istiyorsunuz. Diğer 3 satırı ise girilen değerlere göre random getirmeyi istiyorsunuz.


(SELECT * FROM tableName WHERE columnName = $deger1 LIMIT 1)
UNION
(SELECT * FROM tableName WHERE columnName = $deger2 ORDER BY RAND() LIMIT 3)



Yazdığım sorgu max 4 satır döndürür.

UNION'dan öncesi sabit değeriniz içindir. Örnek vermek gerekirse "ad" sütununda "ahmet" değerini aratıp varsa o satırı çekmiş olursunuz.
UNION'dan sonrası ise max 3 değer döndürür. Örnek vermek gerekirse "ad" sütunundaki değeri "mehmet" olan satırlardan 3 tane random satır döndürmeye çalışır.


0ktay adlı üyeden alıntı

Anladığım kadarıyla bişeyler karaladım ama :)



$sql = mysql_query("select sutun_adi from tablo_adi");
while($sonuc = mysql_fetch_row($sql) ){
echo $sonuc[0]; // birinci değer sabit
$oktay = rand(1,3); // $a değişkenine her döngüde 1 ile 3 arasında dönüyor eğer senin değerin 1 ila 3'ten fazla ile 3' yerine count ile veriyi saydırabilir değişkene atayıp 3'ün yerine yazabilirsin verdiğin sayıya göre değer döndürecektir.
echo $sonuc[$oktay];
}
// eğer sütunda 3'den fazla satır varsa döngüyü 3 ile sınırlandırmalısın.


Yalnız önerdiğiniz çözüm çok sıkıntılı olmuş. 1 Milyon satırı olan tablonun gerçekten tamamını çekmek istemezsiniz. Nacizane önerim, söz konusu yapısal bir veritabanı olduğunda olabildiğince indexlerle çalışmanızdır.
ahmetonurslmz

kişi bu mesajı beğendi.

wmaraci
wmaraci

ahmetonurslmz ahmetonurslmz Software Developer Kullanıcı
  • Üyelik 12.05.2015
  • Yaş/Cinsiyet 34 / E
  • Meslek Software Developer, SEO
  • Konum İstanbul Avrupa
  • Ad Soyad A** S**
  • Mesajlar 197
  • Beğeniler 81 / 28
  • Ticaret 5, (%100)
srhtycl Tam dişime göre operatör bulunmasına çok sevindim. Belirttiğim gibi tamamen işimi görecek bir sorgu oldu.

Cevaplayan herkese teşekkür ederim, serhat beye ayrıca.
 

 

https://ahmetonursolmaz.com.tr
Founder of Leadfure

ahmetonurslmz ahmetonurslmz Software Developer Kullanıcı
  • Üyelik 12.05.2015
  • Yaş/Cinsiyet 34 / E
  • Meslek Software Developer, SEO
  • Konum İstanbul Avrupa
  • Ad Soyad A** S**
  • Mesajlar 197
  • Beğeniler 81 / 28
  • Ticaret 5, (%100)
srhtycl Bir sorun daha var yalnız. Toplamda gelen 4 değerde birbiri arasında rastgele sırayla listelenmesi gerekiyor.
 

 

https://ahmetonursolmaz.com.tr
Founder of Leadfure

ahmetonurslmz ahmetonurslmz Software Developer Kullanıcı
  • Üyelik 12.05.2015
  • Yaş/Cinsiyet 34 / E
  • Meslek Software Developer, SEO
  • Konum İstanbul Avrupa
  • Ad Soyad A** S**
  • Mesajlar 197
  • Beğeniler 81 / 28
  • Ticaret 5, (%100)
Şuan UNION ile birlikte 4 değer çekiliyor. Biri sabit, diğer 3'ü tablodan rastgele sırayla listelenerek ve rastgele geliyor.
Şimdi yapmam gereken durum. Bu sabit değer ve diğer 3 değeri aralarında rastgele listelemek.

Yanı sabit değere A diyelim. Rastgele değerlerde B C ve D olsun.

A B C D - A D C B - A C D B şeklinde değil de A'da bu listelenme içinde farklı yerlerde yer alsın.
Yani B C D A - C A D B şekinde de.
 

 

https://ahmetonursolmaz.com.tr
Founder of Leadfure

ahmetonurslmz ahmetonurslmz Software Developer Kullanıcı
  • Üyelik 12.05.2015
  • Yaş/Cinsiyet 34 / E
  • Meslek Software Developer, SEO
  • Konum İstanbul Avrupa
  • Ad Soyad A** S**
  • Mesajlar 197
  • Beğeniler 81 / 28
  • Ticaret 5, (%100)
Tamamdır dostlar son problemi de giderdim. Çözümüm şu şekilde. Belki daha sonraları başka arkadaşların da işini görür.

foreach ($baglanti->query("
(SELECT * from table_name where coloum_name in('$sabitdeger'))
UNION
(SELECT * from table_name where coloum_name in ('$degerler') order by RAND() LIMIT 3) order by RAND()

")

srhtycl

kişi bu mesajı beğendi.

https://ahmetonursolmaz.com.tr
Founder of Leadfure

srhtycl srhtycl IBM Ambassador Kullanıcı
  • Üyelik 13.04.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek Software Engineer
  • Konum İstanbul Anadolu
  • Ad Soyad S** Y**
  • Mesajlar 501
  • Beğeniler 86 / 124
  • Ticaret 12, (%100)

ahmetonurslmz adlı üyeden alıntı

Tamamdır dostlar son problemi de giderdim. Çözümüm şu şekilde. Belki daha sonraları başka arkadaşların da işini görür.

foreach ($baglanti->query("
(SELECT * from table_name where coloum_name in('$sabitdeger'))
UNION
(SELECT * from table_name where coloum_name in ('$degerler') order by RAND() LIMIT 3) order by RAND()

")



Cevabınızı geç gördüm evet bu şekilde ikinci sorun da çözülmüş olur. Rica ederim, ne demek.
ahmetonurslmz

kişi bu mesajı beğendi.

0ktay 0ktay strdex Kullanıcı
  • Üyelik 01.02.2018
  • Yaş/Cinsiyet 26 / E
  • Meslek Yazılım öğrencisi
  • Konum Antalya
  • Ad Soyad O** Ş**
  • Mesajlar 603
  • Beğeniler 25 / 155
  • Ticaret 2, (%100)

srhtycl adlı üyeden alıntı

Doğru anladıysam aynı tablodan 4 satır veri döndürmek istiyorsunuz. Bu 4 veriden birinde sütun değerini siz veriyorsunuz ve ona göre satır gelmesini istiyorsunuz. Diğer 3 satırı ise girilen değerlere göre random getirmeyi istiyorsunuz.


(SELECT * FROM tableName WHERE columnName = $deger1 LIMIT 1)
UNION
(SELECT * FROM tableName WHERE columnName = $deger2 ORDER BY RAND() LIMIT 3)



Yazdığım sorgu max 4 satır döndürür.

UNION'dan öncesi sabit değeriniz içindir. Örnek vermek gerekirse "ad" sütununda "ahmet" değerini aratıp varsa o satırı çekmiş olursunuz.
UNION'dan sonrası ise max 3 değer döndürür. Örnek vermek gerekirse "ad" sütunundaki değeri "mehmet" olan satırlardan 3 tane random satır döndürmeye çalışır.




Yalnız önerdiğiniz çözüm çok sıkıntılı olmuş. 1 Milyon satırı olan tablonun gerçekten tamamını çekmek istemezsiniz. Nacizane önerim, söz konusu yapısal bir veritabanı olduğunda olabildiğince indexlerle çalışmanızdır.


Teşekkürler srhtycl sql tarafında biraz zayıfım geliştirmeye devam :)
Kimse cevap yazmayınca bişeyler karalamak istedim :)
srhtycl ahmetonurslmz

kişi bu mesajı beğendi.

Eğitimin pahalı olduğunu düşünüyorsanız, cehaletin bedelini hesaplayın.
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