0

我有以下简单的查询,它可以工作并且可以满足我的要求:

SELECT 
    Table1.*, 
    Table2.*                    
FROM 
    Table1, Table2                          
WHERE 
    Table1.Col1 != '1' AND
    Table2.Col2 LIKE 'Miami' AND
    (Table2.Col3 LIKE 'USA' OR  Table2.Col2 LIKE 'US') AND  
    Table1.Col1 = Table2.Col1

我现在需要通过 Table3() 中相应值的 SUM 对这些结果进行排序,SUM(Table3.Col2)使得Table3.Col1 = Table1.Col1Table3.Col1 = Table2.Col1

我认为只需在 WHERE 子句和SUM(Table3.Col2) SELECT 子句中添加这两行就可以了,但这不起作用,只返回一个结果,其中包含所有值的总和Table3.Col2,而不仅仅是与匹配行对应的那些在其他 2 个表中。

我该怎么做?

4

1 回答 1

0

尝试这个:

SELECT 
    Table1.*, 
    Table2.*                    
FROM 
    Table1 JOIN Table2 on Table1.Col1 = Table2.Col1
    JOIN (SELECT Col1, SUM(Table3.Col2) as `SumCol` FROM Table3) as SumTable ON Table2.Col1 = SumTable.Col1                         
WHERE 
    Table1.Col1 != '1' AND
    Table2.Col2 LIKE 'Miami' AND
    (Table2.Col3 LIKE 'USA' OR  Table2.Col2 LIKE 'US') AND  
    Table1.Col1 = Table2.Col1
ORDER BY SumTable.SumCol DESC
于 2012-09-12T18:50:20.847 回答