1

私はmysqlで1つのクエリを書かなければなりません。以下はad_displayの私のテーブルです

ad_displaysId |  adv_id | campaign_id | adtypeId | clicked(boolean)

ad_idを持つアドバタイズとして別のテーブル名があります

ad_id | advertisename

cammpaignIdは、このテーブル名にcamp_tableとして含まれています

campaign_id | camp_name

adtypeIdは、このテーブル名にadtypeとして含まれています

adtypeId | adtype_name

今私が欲しいのは、ad_displayテーブルからこのような結果を与える1つのビューを作成することです

advertise_name | camp_name | adtype_name | count_of_clicked | count_of_row

ここ

count_of_clicked = count of row where adv_id=? campaignId=? adtypeId=? clicked=true
count_of_row= count of row where adv_id=? campaignId=? adtypeId=?

私が提供できる追加の情報は...ad_displayには、同じadv_id、同じcamp_id、クリックされた列を持つ同じad_typeIdを持つ複数のエントリがtrueまたはfalseであるということです。

私はmysql..でまったく新しいので、誰かがmysqlでこれを行うためのクエリを提案できますか?

4

1 に答える 1

2

これを試して:

create view my_ad_view as
select
    advertise_name,
    camp_name,
    adtype_name,
    sum(clicked) as count_of_clicked,
    count(*) as count_of_row
from ad_display ad
left join advertise a on a.ad_id = ad.ad_displaysId
left join camp_table ct on ct.campaign_id = ad.campaign_id
left join adtype at on at.adtypeId = ad.adtypeId 
group by advertise_name, camp_name, adtype_name

の優れた「トリック」に注意してください。これはsum(clicked)、mysqlではtrue1falseあるために機能するため0、ブール値を合計すると、それが真である回数がカウントされます。

于 2012-12-16T18:15:51.373 に答える