您好,我正在学习SQL,并且我在加入方面有一些问题(我在理解它们时遇到问题(
我有这个问题
#1066-不是唯一的表/别名:'tbl_respuestas'
查询应该做的是计算多少人(一般,忽略用户(在" z"调查的" y"问题中答案'x'
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
行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放在其Prope Place
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