表1
表2
表1的id和表2的comicId对应,本人现在要查表1的全部字段,然后连接表2,type为1的数量*5和type为2的数量之和,本人之前这样写的
SELECT * FROM 表1 a LEFT JOIN (SELECT c.id as comicID,COUNT(cv.id)*5+COUNT(cv2.id) AS vote FROM 表1 c INNER JOIN 表2 cv ON c.id=cv.comicId AND cv.type=1 INNER JOIN 表2 cv2 ON c.id=cv2.comicId AND cv2.type=2 WHERE `status`=1) b ON a.id=b.comicID where a.`status`=1
但是结果不对
表2
表1的id和表2的comicId对应,本人现在要查表1的全部字段,然后连接表2,type为1的数量*5和type为2的数量之和,本人之前这样写的
SELECT * FROM 表1 a LEFT JOIN (SELECT c.id as comicID,COUNT(cv.id)*5+COUNT(cv2.id) AS vote FROM 表1 c INNER JOIN 表2 cv ON c.id=cv.comicId AND cv.type=1 INNER JOIN 表2 cv2 ON c.id=cv2.comicId AND cv2.type=2 WHERE `status`=1) b ON a.id=b.comicID where a.`status`=1
但是结果不对
解决方案
10
在别名表b内部,你先是做了一个内联接得到type=1的数据,紧接着又做了一个type为2的内联接,本人想得到新表应该是一张空表吧
30
SELECT c.id ,COUNT(cv.id)*5+COUNT(cv2.id) FROM 表1 c , 表2 cv,表2 cv2 where cv ON c.id=cv.comicId AND cv.type=1 AND c.id=cv2.comicId AND cv2.type=2 AND c.status=1
重新写了个b,试试,毕竟测不了
重新写了个b,试试,毕竟测不了