PHP MySql:SUM表值Where =“from-other-table”? (内联)

时间:2016-06-24 17:13:03

标签: php mysql inner-join

有2个表:“用户”和“点击”。

用户拥有:'用户名'和'推荐人' 点击次数包含:'user'和'value'

users.username = clicks.user

如何推荐引用者为“janosuser”的用户的clicks.value?

我知道它是INNER Join但我不知道sql是什么。

2 个答案:

答案 0 :(得分:0)

此查询将为您提供所需内容:

SELECT SUM(clicks.value) FROM clicks INNER JOIN users ON users.username = clicks.user WHERE users.referrer = 'janosuser'

答案 1 :(得分:0)

当您不确定用户表中的用户名是否唯一时

SELECT SUM(clicks.value) 
    FROM clicks 
        INNER JOIN 
    users 
    ON users.username = clicks.user 
    where users.refere = "janosuser"

或者

当您确定用户表没有重复的用户名时,即用户表中的用户名是唯一的,否则对于那些用户将会有重复的行并且总和将被夸大

import csv
import re


with open('file.csv') as f, open('newfile.csv', 'w', newline='') as newf:
    reader = csv.reader(f, delimiter=';')
    writer = csv.writer(newf, delimiter=';')

    rows = []
    for row in reader:
        for i, e in enumerate(row):
            if re.match('[A-Z][0-9]{2}\.[0-9]{2}', e): # looking for pattern "A00.00"
                idx = i
                break
        newrow = row[:2]
        newrow.append(' '.join(e.strip() for e in row[2:idx])) # joining columns that should be together
        newrow += row[idx:]
        writer.writerow([e for e in newrow if e]) # writing only non-empty columns


with open('newfile.csv') as f:
    for row in f:
        print(row)