2016-03-22 25 views
0

İki tablom var. Tablo 1, products_cat_arabic ve ikinci tablo products_arabic'dur.bir tablodaki tüm satırları döndürmeyi deneyin ve başka bir tablodan eşleşen kimliği olan satırların sayısını sayın

Her cat öğesinin adını products_cat_arabic'dan diğer tablodaki ilgili cat_id numaralarıyla almam gerekir. Bu benim sorgu:

<?php 
    $getCats = $db->query(
    'SELECT c.*, COUNT(*) as num_items 
    FROM products_cat_arabic c 
    JOIN products_arabic q ON q.id = c.id 
    GROUP BY c.id' 
    ); 
while ($gCat = mysqli_fetch_array($getCats)) { 
?> 
<li class="col-xs-12 col-md-4 col-lg-3"><a href="#"><?php print $gCat['cat_name']; ?> 
    </a><span 
     title="products number"><?php print $gCat['num_items']; ?></span></li> 
    <?php 
    } 
    ?> 

her kedinin isimlerini var ama ürün sayısı yanlış.

Düzenleme:. Sayımı hakkı var ama sonuncusu olan ürünler yok sadece sıra 2 görebilirsiniz 3 kategoriye sahip

SELECT c.cat_name, COUNT(*) as num_items 
FROM products_cat_arabic c 
JOIN products_arabic q ON q.cat = c.id 
GROUP BY c.id 

+0

'cat_name, COUNT (*) 'ı SEÇİN. GROUP BY cat_name' * ve GROUP BY kimliği seçiminin yanlış olduğunu düşündüğümden şüpheleniyorum – Mihai

+0

Hangi hatayı gördünüz? –

+0

Hata alamıyorum Hatalı sayım –

cevap

0
SELECT c.cat_name, 
     t.nb as num_items 
FROM products_cat_arabic c 
INNER JOIN 
(SELECT COUNT(*) as nb, products_arabic.cat 
    FROM products_arabic 
    GROUP BY products_arabic.cat) t ON t.cat = c.id 
GROUP BY c.cat_name 
+0

Hayır say işe yaramadı ama bize ilk noktaya geri dönüyor –

+0

@Jean Doux her zaman mantığınızı açıklayan bir metin ekleyin. –

0

bu deneyin:

SELECT c.cat_name, COUNT(q.cat) as num_items FROM products_arabic q 
LEFT JOIN products_cat_arabic c ON q.cat = c.id 
GROUP BY q.cat 

Emin değilim ama sanırım q.catc.cat_name ile ilgilidir ve'ye değil. Her neyse, gerçekten tablonuz hakkında bir şey bilmiyorum ama eğer yanlışsa, birleştirme q.cat = c.id'u değiştirebilirsiniz.

İlgili konular