MySQL多重查询问题

时间:2009-04-08 10:47:03

标签: sql mysql cartesian-product

我在查询MySQL中的多个表时遇到问题,目前我的智慧结束了。

我在每个表格中都有唯一的ID,我使用INNER JOIN来组合它们;我对SQL很新,这可能是错误的方法,因此我在这里发帖:

查询:

SELECT res.UserID, res.QuizID, res.QuizResult, u.UserID, u.UserLogin, q.QuizID, q.QuizName, q.QuizFile
FROM results res
INNER JOIN users u ON (res.UserID = u.UserID) 
INNER JOIN quiz q ON (res.QuizID = q.QuizID)

users包含

UserID
UserLogin
UserPass

quiz包含

QuizID
QuizName
QuizFile

results包含

UserID
QuizID
QuizResults

任何人都可以告诉我为什么我会得到笛卡尔产品,以及我应该如何修复它?

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT res.UserID, res.QuizID, res.QuizResult, u.UserID, u.UserLogin, q.QuizID, q.QuizName, q.QuizFile FROM results as res INNER JOIN users as u ON res.UserID = u.UserID INNER JOIN quiz as q ON res.QuizID = q.QuizID

实现像INNER JOIN这样的东西的另一种方法是:+

SELECT res.UserID, res.QuizID, res.QuizResult, u.UserID, u.UserLogin, q.QuizID, q.QuizName, q.QuizFile 
FROM results as res,users as u ,quiz as q 
WHERE res.UserID = u.UserID 
AND res.QuizID = q.QuizID