我需要联接两个表,即我的表:
表格1
user ip amount time
user1 10.12.130.14 5000 1409007653
user2 10.12.130.13 2000 1309007653
user3 10.12.130.12 4000 1209007653
user4 10.12.130.11 6000 1109007653
...
表2
ref ip time
ref1 10.12.130.14 1209007653
ref1 10.12.130.13 1109007653
ref1 10.12.130.12 1309007653
ref2 10.12.130.11 1409007653
...
我需要结果:(foreach所有ref)
ref allcount todaycont allsum todaysum
ref1 3 1 11000 5000
ref2 1 0 6000 0
...
我编写的代码还不完整:
$query = mysql_query("SELECT table2.ref, table1.user
FROM
table2 INNER JOIN table1
ON
table2.ip = table1.ip
") or die(mysql_error());
最佳答案
未经测试,但据我对您的问题的解释,这应该有效:
SELECT
A.ref,
COUNT(*) allcount,
CASE
WHEN DATE_FORMAT(A.time,'%m-%y') = DATE_FORMAT(NOW(),'%m-%y')
THEN COUNT(*)
END todaycount,
SUM(A.amount),
CASE
WHEN DATE_FORMAT(A.time,'%m-%y') = DATE_FORMAT(NOW(),'%m-%y')
THEN SUM(A.amount)
END todaysum
FROM table1 A
JOIN table2 B
ON A.ip = B.ip
GROUP BY
B.ref
我不确定的最大部分是case语句中的日期/时间段。这主要是由于我不熟悉表中使用的日期/时间格式,如果针对您的数据类型进行了适当的调整,它们应该可以工作。