请问这样为什么查出来的数字会翻倍啊,在线等挺急的...
sql吧
全部回复
仅看楼主
level 1
masterkim55 楼主
SELECT DISTINCT SPJ.JNO,JNAME,SPJ.PNO,PNAME,SUM(QTY)
FROM SPJ,P,J
WHERE JNAME IN (SELECT JNAME
FROM J
WHERE J.JNO=SPJ.JNO)
AND
PNAME IN (SELECT PNAME
FROM P
WHERE P.PNO=SPJ.PNO)
GROUP BY SPJ.JNO,JNAME,SPJ.PNO,PNAME
ORDER BY SPJ.JNO ASC,SUM(QTY)DESC;
2021年12月10日 04点12分 1
level 8
写法明显有笛卡儿积,哪怕你用 DISTINCT 也是徒劳的
改成:
SELECT SPJ.JNO,JNAME,SPJ.PNO,PNAME,SUM(QTY)
FROM SPJ,P,J
WHERE
J.JNO=SPJ.JNO
AND P.PNO=SPJ.PNO
GROUP BY SPJ.JNO,JNAME,SPJ.PNO,PNAME
ORDER BY SPJ.JNO ASC,SUM(QTY)DESC;
2021年12月11日 06点12分 2
大佬可以的话能细讲两句吗[小乖]
2021年12月11日 10点12分
@masterkim55 因为你“SPJ,P,J”这个写法就是无条件innser join 肯定出现笛卡儿积的。然后你又 IN 回自己表的JNAME和PNAME这个IN本来就是拿链的表进行
2021年12月13日 00点12分
1