v2.5.2
Giriş yap

Mysql Gruplama Hakkında

siyahkalem
408 defa görüntülendi

Merhaba,
Aşağıdaki tablomda tek kullanıcıya ait olan resimleri listelemek istiyorum.
Grouplama konusunda biraz zayıfım açıkası. Desteğiniz için şimdiden teşekkür ederim.

  // $taskID = * taskFileTaskID'yi eşleştirmekedir.

 SELECT*FROM users as u
 INNER JOIN taskfile as tf
 ON u.personelId = tf.tasksFileUserID 
 WHERE tf.tasksFileTaskID = '$taskID'
 ORDER BY tf.date DESC 
                
Cevap yaz
Cevaplar (6)
kartal
818 gün önce

as u sonrası için yazıyorum

as u, GROUP CONCAT(taks_filename) as grupimg

sorguna GROUP BY taksfileuserid demelisin

sorgunda kullanıcı bilgisi ve aralarında varsayılan olarak virgül ike ayrılmış şekilde
resim1,resim2 resim5 vs.. diye gelecek
resim adlarını da explode fonksiyonu ile istersen diziye çevirebilirsin
ayrıxa grup concat sınırmı sayıda karaktere izin verir işini görür yine de bunu da araştır

trsherlock
819 gün önce

Nasıl bir şey istediğini anlamadım. O zaman benim gibi bir dizi çıktısı sunarsan daha faydalı olabilir.

siyahkalem
819 gün önce

Maalesef olmadı. Çünkü kullanıcıları gruplamam gerekiyor. Aksi takdirde foreach döngüsünde order by date desc ile listelenerek veritabanına göre listeleme yapmaktadır.
Veri kadar listeleme yerine kullanıcı kadar listelenerek resimler ilgili kullanıcının objesinde gelmeli.

trsherlock
821 gün önce

Sanırım istediğin bu şekilde?

[
    "userid1"=> ["resim1", "resim2", "resim3", "resim4"],
    "userid2"=> ["resim1", "resim2", "resim3", "resim4"],
    ...,
    ...
]

While döngüsü içinde yaptığın zaman sanırsam işini görecektir.

    $img[$row["tasksFileUserID"]][] = $row["tasksFileName"]

Not: Bir de bu sorguda userid ve resimler dışında başka bir şeye ihtiyacın yoksa
SELECT * FROM şeklinde kullanmanı pek önermem. Hangi sütunlara ihtiyacın varsa onları belirt.
Daha az veri olması daha verimli olmasını sağlar.

siyahkalem
821 gün önce

tasksFileUserID sütununda olan kullanıcının resimlerini tek bir hücre içinde toplamayı düşünüyorum.

Şöyle düşün; X adındaki kullanıcının resimlerini,

X -> resim1,
X -> resim2,
X -> resim3 şekilinde listelenmesi yerine;

X -> resim1, resim2, resim3 şeklinde olmasını düşünüyorum.

trsherlock
821 gün önce

Hangi kullanıcıyı aradığını belirtmezsen nasıl bulmasını bekleyebilirsin?

 "SELECT * FROM users as u
 INNER JOIN taskfile as tf
 ON u.personelId = tf.tasksFileUserID 
 WHERE tf.tasksFileTaskID = $taskID AND tf.tasksFileUserID = $userID
 ORDER BY tf.date DESC"