我需要联接两个表,即我的表:

表格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语句中的日期/时间段。这主要是由于我不熟悉表中使用的日期/时间格式,如果针对您的数据类型进行了适当的调整,它们应该可以工作。

10-08 13:34