-2

私は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、在庫レベルの日次レポートのジョブを作成します...

4

3 に答える 3

1

タグごとのカウントではなく、カウントのみが必要な場合は、次のようになります。

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

于 2012-12-01T18:20:49.440 に答える
0

これを試して

     select tag_design ,count(tag_design) countdesign
     from bid_tag
     where user_id = 0 and reserved = 0
     group by tag_design
于 2012-12-01T18:26:49.780 に答える
0

あなたのコメントの後、テーブル間のリンクは逆のようです。そこで、スキーマを考慮に入れるようにクエリを変更しました。これで機能するはずです。

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
于 2012-12-01T18:10:00.263 に答える