简体   繁体   English

如何在一个查询中使用内部连接获取列值的总和?

[英]how to get sum of column value with inner join in one query?

i have one table name as a_ad_display in that i have following table 我有一个表名作为a_ad_display,因为我有以下表

advId | Displaytime

I have One a_advertise table with following collumn 我有一个带有以下列的a_advertise表

advertiseId| advertisename| mediaTypeId

I have one a_mediatype table with following collumn 我有一个带有以下列的a_mediatype表

mediaTypeId | medianame

1 | Image
2 | Animation
3 | video

there is multiple entry of advId in the a_display table a_display表中有advId的多个条目

i want to fetch the sum of adv display with their mediaType like how much video ,image and animation type of advertise in a_display table 我想使用他们的mediaType来获取adv显示的总和,例如a_display表中广告的视频,图像和动画类型

i have done this way 我已经这样

SELECT 
  mdtype.medianame AS _type,
  SUM(mdtype.medianame = 'Image') AS _display 
FROM
  a_ad_display a 
  INNER JOIN a_advertise adv 
    ON adv.advertiseId = a.advId 
  INNER JOIN a_mediatype mdtype 
    ON mdtype.mediaId = adv.mediaTypeId 
GROUP BY medianame ;

but i got following results 但是我得到了以下结果

在此处输入图片说明

but if write just sum(distinct mdtype.medianame) then its givng me error...so how can i get all the values of image video and animation in just one query? 但是,如果只写sum(distinct mdtype.medianame),那么它给我报错...那么,如何在一个查询中获得图像视频和动画的所有值?

SELECT
    m.medianame,
    COUNT(as.advId) as Total
FROM    a_mediatype as m
INNER JOIN a_advertise as a ON a.mediaTypeId = m.mediaTypeId
INNER JOIN  a_ad_display as ad ON ad.advId = a.advertiseId
GROUP BY m.mediaTypeId

Try this... 尝试这个...

SELECT mdtype.medianame as _type, SUM(mdtype.medianame) as _display
FROM a_ad_display a
INNER JOIN a_advertise adv ON ad.advertiseID=a.advId
INNER JOIN a_mediatype mdtype ON mdtype.mediaID=adv.mediaTypeId
GROUP BY _type
HAVING DISTINCT(_type)

You can try this 你可以试试这个

SELECT m.mediaTypeId, 
       MIN(m.medianame) AS `type`, 
       COUNT(m.mediaTypeId) AS `count`
  FROM a_ad_display a LEFT JOIN 
       a_advertise d on d.advertiseId=a.advId LEFT JOIN 
       a_mediatype m on m.mediaId=d.mediaTypeId 
GROUP BY m.mediaTypeId

Try this : 尝试这个 :

SELECT
    m.medianame,
    COUNT(as.advId) as Total
FROM a_mediatype as m
INNER JOIN a_advertise as a 
ON a.mediaTypeId = m.mediaTypeId
INNER JOIN  a_ad_display as ad 
ON ad.advId = a.advertiseId
GROUP BY m.mediaTypeId

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM