2016-03-22 9 views
0

私は2つのテーブルを持っています。表1はproducts_cat_arabicであり、表2はproducts_arabicである。テーブル内のすべての行を返し、一致するIDを持つ行の数を別のテーブルから数えようとします。

それぞれcatの名前をproducts_cat_arabicから、関連する番号のcat_idから取得する必要があります。 これは私のクエリです:

<?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 
    } 
    ?> 

は、各猫の名前を得たが、製品の数が間違っています。

編集:カウント権利を得たが、私は最後のものにすべての製品を持っていないだけのように2を見ることができる3カテゴリがあり

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

'SELECT cat_name、COUNT(*)as .... GROUP BY cat_name' *とGROUP BY IDの選択が間違っていると思われます – Mihai

+0

どのようなエラーが表示されましたか? –

+0

私はエラーが発生しない私は間違った数を得る –

答えて

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

いいえうまくいきませんでしたが、それは最初のポイントに戻るようにしています –

+0

@ Jean Douxは常にあなたのロジックを説明するテキストを追加します。 –

0

これを試してみてください。

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 

私は確信していませんが、q.catc.cat_nameに関連し、には該当しません。とにかく、私はあなたのテーブルについて本当に知りませんが、それが間違っている場合は、q.cat = c.idの参加を変更することができます。

関連する問題