您好我学习SQL并且我遇到了一些连接问题(我对它们有所了解)
我有这个问题
#1066 - 不是唯一的表/别名:' tbl_respuestas'
查询应该做什么,是计算有多少人(一般情况下,忽略用户)已回答' x',' y'问题' z'调查
SELECT COUNT(*) FROM tbl_respuestas
INNER JOIN tbl_encuesta_usuario ON tbl_encuesta_usuario.user_id = user.id
INNER JOIN tbl_encuesta ON tbl_encuesta.id = tbl_encuesta_usuario.tbl_encuesta_id
INNER JOIN tbl_encuesta_has_tbl_preguntas ON tbl_encuesta_has_tbl_preguntas.tbl_encuesta_id = tbl_encuesta.id
INNER JOIN tbl_preguntas ON tbl_preguntas.id = tbl_encuesta_has_tbl_preguntas.tbl_preguntas_id
INNER JOIN tbl_preguntas_has_tbl_respuestas ON tbl_preguntas_has_tbl_respuestas.tbl_preguntas_id = tbl_preguntas.id
INNER JOIN tbl_respuestas ON tbl_respuestas.id = tbl_preguntas_has_tbl_respuestas.tbl_respuestas_id
WHERE tbl_respuestas.respuesta = 2
答案 0 :(得分:2)
行SELECT COUNT(*) FROM tbl_respuestas
和INNER JOIN tbl_respuestas
行
没有意义,因此错误。
除非它是您想要的,否则您需要给出不同的名称/别名,如下所示:
SELECT COUNT(*) FROM tbl_respuestas r
INNER JOIN tbl_respuestas r2
另外作为快速说明,您可以像下面一样重写整个sql。
优良作法是为表提供较短引用的名称,并使sql看起来更清晰一些。
此外,如果您尝试加入的两个表具有相同的列名,那么您可以使用关键字USING
,而不必编写该长行tbl_encuesta_usuario.user_id = user.id
请务必将r和r2放在其位置
SELECT COUNT(*) FROM tbl_respuestas r
INNER JOIN tbl_encuesta_usuario u USING user_id
INNER JOIN tbl_encuesta e ON e.id = u.tbl_encuesta_id
INNER JOIN tbl_encuesta_has_tbl_preguntas hp ON hp.tbl_encuesta_id = e.id
INNER JOIN tbl_preguntas p ON p.id = hp.tbl_preguntas_id
INNER JOIN tbl_preguntas_has_tbl_respuestas hr ON hr.tbl_preguntas_id = p.id
INNER JOIN tbl_respuestas r2 ON r2.id = hr.tbl_respuestas_id
WHERE r.respuesta = 2