2016-04-07 21 views
0

koleksiyonları ve collection_items. Ben her koleksiyon için seçebileceğiniz anlamaya çalışıyorumMysql sorgulama sınırlama sayısı

, aynı sorguda 4 collection_items maksimum olsun.

Bazı koleksiyonları fazla 4 öğesi bulunabilir, ama ben sadece göstermek için maksimum 4 gerekir.

aşağıdaki sorgu her koleksiyon için tüm öğeleri döndürür ama 4.

SELECT cn.*, o.url_thumb 
FROM collection_names as cn LEFT JOIN collection_items as ci ON ci.collection_id=cn.id 
    LEFT JOIN objects as o ON o.ID=ci.object_id 
WHERE cn.public=1 
ORDER BY cn.fecha DESC 
LIMIT 0, 20 

Tablo tanımına sınırlandırabilirsiniz bilmiyorum: enter image description here

+0

Hangi 4 'collection_item' göstermek istersiniz? –

+0

@JuanCarlosOropeza Sipariş umrumda değil .. rastgele olabilir. – Apalabrados

+0

LIMIT 4 ........? 1. Önceden yapmadıysanız, uygun DDLS sağlamak (ve/veya bir sqlfiddle) bu yüzden: –

cevap

0

group row num ve sub-query tahsisi kullanan bu çözüm deneyin .

select id, user_id, image_object_id, name, public, description, fecha, url_thumb 
from 
(
    select 
     *, 
     IF(id = @last_id, @grp_rn := @grp_rn + 1, @grp_rn := 1) as grp_rn 
    from 
    (
     SELECT cn.*, o.url_thumb 
     FROM collection_names as cn LEFT JOIN collection_items as ci ON ci.collection_id=cn.id 
      LEFT JOIN objects as o ON o.ID=ci.object_id 
     WHERE cn.public=1 
     ORDER BY cn.fecha DESC 
     LIMIT 0, 20 
    ) as t cross join (select @grp_rn := 0, @last_id := NULL) param 
    order by t.id 
) as t2 
where t2.grp_rn <=4; 
+0

Aşağıdaki hatayı alıyorum: SQL sözdiziminizde bir hata var; yakın kullanma hakkı sözdizimi için MySQL sunucu sürümü ile uyumlu kılavuzu hattı 1 – Apalabrados

+0

Merhaba kısmındaki 'seçeneğini ( url_thumb , *, ' diye yazı düzenlenebilir ve dahil ettik . collection_names tablo tanımı – Apalabrados

+0

Eh, şimdi hata buradadır: Eğer SQL sözdizimi bir hata var; 'yakın kullanmak *, IF (id seçmek için sağ sözdizimi için MySQL sunucu sürümü ile uyumlu kılavuzu = last_id, grp_rn: = grp_rn + 1, grp_rn:.. = 'bazı hata düzeltildi hattı 3 – Apalabrados

İlgili konular