[英]SQL: convert Where clause to Inner Join
I am trying to manipulate a query by converging to JOIN but it continues with the same errors.我试图通过收敛到 JOIN 来操作查询,但它继续出现相同的错误。
SELECT TRIM(T007.CUENTA) AS CUENTA,
T007.IDENTCLI AS IDENTTIT,
T013.IDENTCLI AS IDENTADIC,
TRIM(T026.DESTIPT) AS DESTIPT,
T043.PRODUCTO, T043.SUBPRODU,
TRIM(T043.DESPROD) AS DESPROD,
T175.CODESTCTA,
TRIM(T175.DESESTCTA) AS DESESTCTA,
T043.LINEAPR
FROM MPDT007 T007, MPDT013 T013, MPDT043 T043, MPDT175 T175 ,MPDT026 T026
WHERE T007.CUENTA = 000005433752
AND T007.CUENTA = T013.CUENTA
AND T013.NUMBENCTA = 2
AND T013.CODENT = 0001
AND T026.INDTIPT = 3
AND T007.PRODUCTO = T043.PRODUCTO
AND T007.SUBPRODU = T043.SUBPRODU
AND T007.CODESTCTA = T175.CODESTCTA
AND T043.LINEAPR = T175.LINEA
AND T043.LINEAPR <> 0003
to到
SELECT TRIM(T007.CUENTA) AS CUENTA,
T007.IDENTCLI AS IDENTTIT,
T013.IDENTCLI AS IDENTADIC,
T043.PRODUCTO AS PRODUCTO,
T043.SUBPRODU AS SUBPRODU,
TRIM(T043.DESPROD) AS DESPROD
FROM MPDT007 T007
JOIN MPDT013 T013 ON (T013.CUENTA = T007.CUENTA AND T013.NUMBENCTA = 2 AND T013.CODENT = 0001)
JOIN MPDT043 T043 ON (T043.LINEAPR <> 0001 AND T043.PRODUCTO = T007.PRODUCTO AND T007.SUBPRODU = T043.SUBPRODU)
WHERE
T007.CUENTA = 000005433752
The result of the following query does not show any fields.perform multiple variations of the inner join (left-right) with no apparent solution.以下查询的结果不显示任何字段。请在没有明显解决方案的情况下执行内部联接(左-右)的多种变体。
Thanks for your comments.感谢您的意见。
Try checking you inner join you put open and close parenthesis.尝试检查您放置了左括号和右括号的内部连接。
SELECT TRIM(T007.CUENTA) AS CUENTA,
T007.IDENTCLI AS IDENTTIT,
T013.IDENTCLI AS IDENTADIC,
T043.PRODUCTO AS PRODUCTO,
T043.SUBPRODU AS SUBPRODU,
TRIM(T043.DESPROD) AS DESPROD
FROM MPDT007 T007
JOIN MPDT013 T013
ON (T013.CUENTA = T007.CUENTA AND T013.NUMBENCTA = 2 AND T013.CODENT = 0001) --This is your ERROR
JOIN MPDT043 T043
ON (T043.LINEAPR <> 0001 AND T043.PRODUCTO = T007.PRODUCTO AND T007.SUBPRODU = T043.SUBPRODU) --This is your ERROR
WHERE T007.CUENTA = 000005433752
tyr something like this: tyr 是这样的:
SELECT TRIM(T007.CUENTA) AS CUENTA,
T007.IDENTCLI AS IDENTTIT,
T013.IDENTCLI AS IDENTADIC,
T043.PRODUCTO AS PRODUCTO,
T043.SUBPRODU AS SUBPRODU,
TRIM(T043.DESPROD) AS DESPROD
FROM MPDT007 T007
JOIN MPDT013 T013
ON T013.CUENTA = T007.CUENTA
AND T013.NUMBENCTA = 2
AND T013.CODENT = 0001
JOIN MPDT043 T043
ON T043.LINEAPR <> 0001
AND T043.PRODUCTO = T007.PRODUCTO
AND T043.SUBPRODU = T007.SUBPRODU
WHERE T007.CUENTA = 000005433752
you just need to remove the open and close parenthesis because it treats it as one.您只需要删除左括号和右括号,因为它将其视为一个。
You seem to be missing tables.你似乎缺少桌子。 I think this is the equivalent:我认为这是等价的:
SELECT . . .
FROM MPDT007 T007 JOIN
MPDT013 T013
ON T007.CUENTA = T013.CUENTA JOIN
MPDT043 T043
ON T007.PRODUCTO = T043.PRODUCTO AND
T007.SUBPRODU = T043.SUBPRODU JOIN
MPDT175 T175
ON T043.LINEAPR = T175.LINEA JOIN
ON T007.CODESTCTA = T175.CODESTCTA CROSS JOIN
MPDT026 T026
WHERE T007.CUENTA = '000005433752' AND
T013.NUMBENCTA = 2
T013.CODENT = '0001' AND
T026.INDTIPT = 3
T043.LINEAPR <> '0003';
Note that T026
does not appear to have a JOIN
condition, only a filtering condition.请注意, T026
似乎没有JOIN
条件,只有过滤条件。
I added single quotes for the comparisons to numbers that start with a zero.我添加了单引号,以便与以零开头的数字进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.