0

嘿,我有以下查询:

SELECT count(e.id), count(c.id), e.Nid
  FROM tbl1 e
  LEFT JOIN tbl2 c
  ON e.Uid = c.Uid
  where e.at > '".$from."'
  AND e.at < '".$to."'
  GROUP BY e.Nid

所以我有两张表,一张用于当用户访问我的网站时,另一张用于当他创建帐户时(它是我自己的网站流量监视器)。Nid 是基于浏览器的用户代理。

所以这告诉我有多少人出现了,以及按浏览器类型创建了多少帐户。现在我的问题是我想添加一个子句,例如 WHERE e.IP is unique。

请有人指出我正确的方向,我对mysql有点陌生。

4

3 回答 3

1

它应该看起来像这样

SELECT COUNT(DISTINCT e.IP), count(e.id), count(c.id), e.Nid
FROM tbl1 e
LEFT JOIN tbl2 c
ON e.Uid = c.Uid
where e.at > '".$from."'
AND e.at < '".$to."'
GROUP BY e.Nid
于 2013-06-26T20:11:20.537 回答
0

换句话说,您想计算tbl1. 在这种情况下,您将无法加入,tbl1因为我认为您可以为每个 IP 地址拥有多个.tbl2UidUidtbl1

于 2013-06-26T20:25:55.167 回答
0
SELECT DISTINCT(e.IP), count(e.id), count(c.id), e.Nid
FROM tbl1 e
LEFT JOIN tbl2 c
ON e.Uid = c.Uid
where e.at > '".$from."'
AND e.at < '".$to."'
GROUP BY e.Nid 

您需要使用 Distinct 关键字。正如它所说,它只为该字段选择不同或唯一的记录。

于 2013-06-26T20:12:52.237 回答