2017-04-21 29 views
0

你好,我是學習SQL和我有加入一些問題(這是我的問題理解起來)這個MySQL查詢有問題

我有這個問題

#1066 - 不是唯一的表/別名:「tbl_respuestas」

什麼應該做的查詢,是指望有多少人(一般情況下,忽略用戶)有答案「X」,在「Z」調查「y」的問題

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

你能提供sqlfiddle嗎? –

+2

在每個表上使用別名,然後在列參考中使用它。 –

回答

2

line SELECT COUNT(*) FROM tbl_respuestas and line 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和R 2在其prope地方

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 
+0

謝謝您的回答,並很抱歉爲您寫作遲到。它沒有工作,使用「使用(用戶ID),所以我嘗試tbl_encuesta_usuario你使用u.user_id,它也沒有工作 –

+0

順便說一句,萬一我不想用用戶(我只是想一個將軍計數)如何查詢? –

+0

對不起,不要在其周圍放置圓括號,使用'INNER JOIN tbl_encuesta_usuario u USING(user_id)'我會更新答案... – CAllen

-1

你可以嘗試用列名,而不是* 例不同:使用短表名refrence提到

SELECT COUNT(distinct peopleName) 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 

,喜歡卡連是個好習慣。