私は2つのテーブルを持っています:
bid_tag
bid_tag_design
bid_tag:id、tag_design、tag_size、user_id、reserved
big_tag_design:id、name
bid_tagテーブル内にそれぞれのタグデザインがいくつあるかを照会できるようにしたいWHERE user_id = 0 AND reserved = 0
次に、クエリを使用してCRON
、在庫レベルの日次レポートのジョブを作成します...
タグごとのカウントではなく、カウントのみが必要な場合は、次のようになります。
select count(*)
from bid_tag_design
where user_id = 0 and reserved = 0
user_idとreservedがそのテーブルにあると仮定して、それを行います。結合が必要なのは、bid_tagに次のようなフィールドの一方または両方がある場合のみです。
select count(*)
from bid_tag bt join
bid_tag_design btd
on bt.bid_tag_id = btd.bid_tag_id
where bt.user_id = 0 and btd.reserved = 0
デザインごとに行が必要な場合は、それでグループ化します。
select btd.bid_tag_design_id, count(*)
bid_tagbtからbid_tag_designbtdon bt.bid_tag_id = btd.bid_tag_idここで、bt.user_id=0およびbtd.reserved=0
これを試して
select tag_design ,count(tag_design) countdesign
from bid_tag
where user_id = 0 and reserved = 0
group by tag_design
あなたのコメントの後、テーブル間のリンクは逆のようです。そこで、スキーマを考慮に入れるようにクエリを変更しました。これで機能するはずです。
SELECT COUNT(*) as nbDesigns, bid_tag_design.id, bid_tag_design.name
FROM bid_tag_design
LEFT JOIN bid_tag ON bid_tag.tag_design = bid_tag_design.id
WHERE bid_tag.user_id = 0 AND bid_tag.reserved = 0
GROUP BY bid_tag.tag_design
これがbid_tag_designにあるとしましょう:
id | name
1 | design 1
2 | design 2
そしてこれをbid_tagで
id | tag_design | user | reserved
1 | 1 | 0 | 0
2 | 1 | 0 | 0
3 | 2 | 0 | 0
4 | 2 | 0 | 0
5 | 1 | 1 | 0
6 | 2 | 2 | 0
7 | 1 | 0 | 0
8 | 1 | 0 | 0
9 | 1 | 3 | 0
次に、2番目のクエリの結果は次のようになります。
nbDesigns | id | name
4 | 1 | design 1
2 | 2 | design 2