Pergunta

Eu tenho um problema consultando várias tabelas em MySQL e atualmente estou no meu juízo final.

Eu tenho IDs exclusivos em cada mesa, e estou usando um INNER JOIN combiná-los; Eu sou muito novo para SQL e este pode ser o método errado, daí me postar aqui:

Inquérito:

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)

Table users contém

UserID
UserLogin
UserPass

Table quiz contém

QuizID
QuizName
QuizFile

Table results contém

UserID
QuizID
QuizResults

Alguém pode por favor me diga por que estou recebendo um produto cartesiano, e como eu deveria ir sobre corrigi-lo?

Foi útil?

Solução

Tente isto:

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

Uma maneira diferente de perceber algo como um INNER JOIN é esta: +

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top