我们可以在mysql内连接中使用OR

时间:2012-02-13 08:25:12

标签: mysql

SELECT DISTINCT (
A.`id`
), A.`id` , A.`no` , B.amount, SUM( A.`outward` * A.`price` ) AS total, A.`outward_date`
FROM `outward` A
INNER JOIN franchisees B
INNER JOIN store C
INNER JOIN shoppe D
WHERE B.user_id = C.user_id
AND (C.pos_id = A.no)//(C.pos_id = A.no OR (D.id = A.no)
OR (D.id = A.no)
AND A.outward_date = '2012-02-10'
GROUP BY A.req_id
ORDER BY A.no ASC , A.`d` ASC , B.amount ASC

此查询中的问题是SUM(A. outward * A。price)AS总数有所不同,与

无关

ouptut

id           sum(outward * price)
12021030738-105  485.220000000000
1202104186-104   2504.410000000000

显示输出

12021030738-105       32557.33
1202104186-104      6307.86

我猜问题是OR语句?任何人都可以找到查询的问题

1 个答案:

答案 0 :(得分:0)

请尝试以下操作。将OR条件括在括号中:

  SELECT DISTINCT (
    A.`id`
    ), A.`id` , A.`no` , B.amount, SUM( A.`outward` * A.`price` ) AS total, A.`outward_date`
    FROM `outward` A
    INNER JOIN franchisees B
    INNER JOIN store C
    INNER JOIN shoppe D
    WHERE B.user_id = C.user_id
    AND ((C.pos_id = A.no) OR (D.id = A.no))
    AND A.outward_date = '2012-02-10'
    GROUP BY A.req_id
    ORDER BY A.no ASC , A.`d` ASC , B.amount ASC