【问题标题】:MySQL Multitable Query ProblemMySQL多表查询问题
【发布时间】:2010-10-18 06:48:16
【问题描述】:

我在查询 MySQL 中的多个表时遇到问题,目前我束手无策。

我在每个表中都有唯一的IDs,并且正在使用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

谁能告诉我为什么我得到一个笛卡尔积,以及我应该如何修复它?

【问题讨论】:

  • 想要你的查询返回什么?

标签: sql mysql cartesian-product


【解决方案1】:

试试这个:

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加入测验为 q ON res.QuizID = q.QuizID

实现类似 INNER JOIN 的另一种方法是:+

选择 res.UserID、res.QuizID、res.QuizResult、u.UserID、u.UserLogin、q.QuizID、q.QuizName、q.QuizFile FROM 结果为 res,users 为 u,quiz 为 q 其中 res.UserID = u.UserID AND res.QuizID = q.QuizID

【讨论】:

  • 感谢您的回答,但是这个查询仍然产生笛卡尔,请问还有其他想法吗?
  • hm.. 然后告诉我们你到底期望得到什么结果......据我所知,这些查询不应该产生 certesian 产品......
猜你喜欢
  • 2014-01-06
  • 1970-01-01
  • 2012-02-08
  • 2011-12-15
  • 1970-01-01
  • 2010-12-30
  • 2011-11-14
  • 1970-01-01
相关资源
最近更新 更多