将来自不同表的视图包括在广告选择查询中

时间:2017-09-23 22:19:57

标签: mysql sql

我有一个包含广告信息的表,以及一个包含广告视图的表。带有视图的表包含ip和广告ID,每次请求广告时都会更新。

SELECT ip FROM view WHERE adId = ?; // I only get the count
SELECT DISTINCT ip FROM view WHERE adId = ?; // I only get the count
SELECT * FROM advertisements; 

现在,我运行所有这三个查询以生成响应。有没有办法将它们组合成一个?

1 个答案:

答案 0 :(得分:1)

如果广告表也包含列adId或它的相应列,则可以使用该键连接这两个表。你可以有这样的查询

SELECT DISTINCT v.ip,
       a.*
  FROM `view` v
  JOIN advertisement a
    ON v.adId = a.adId
 WHERE v.adId = ?

根据您的评论,您可以使用以下查询来获取每个广告所需的计数。

SELECT adId,
       COUNT(ip),
       COUNT(DISTINCT ip)
  FROM `view`
 WHERE adId = ? --you can ommit this to see all advertisements
 GROUP BY adId

如果要查看广告的详细信息,可以将查询连接到广告表。