насколько я знаю, нельзя просто взять все "ON" для каждого джойна, и свалить их в одну кучу в конце. Они тогда будут относиться только к последнему джойну. В первом запросе это прокатило, потому что там INNER JOIN, связи один к одному, ссылочная целостность и прочее, т.е. на каждую строку из questions нашлось по одной строке из других таблиц. А с комментами всё по другому.
Кстати, непонятно, зачем GROUP BY в первом запросе.
попробуй так:
SELECT
questions.id,
questions.question_name,
questions.answer,
questions.variant1,
questions.variant2,
questions.variant3,
questions.variant4,
questions.user_id,
questions.city_id,
questions.street_id,
questions.date,
questions.img,
users.login,
city.city_name,
street.street_name,
COUNT(comments.questions_id) as countComment
FROM questions
INNER JOIN users ON questions.user_id = users.id
INNER JOIN city ON questions.city_id = city.id
INNER JOIN street ON questions.street_id = street.id
LEFT JOIN comments ON comments.questions_id = questions.id
GROUP BY questions.id ORDER BY `date` DESC
-------------------------------------------------------------
либо такой вариант (надо посмотреть, что быстрее):
SELECT
questions.id,
questions.question_name,
questions.answer,
questions.variant1,
questions.variant2,
questions.variant3,
questions.variant4,
questions.user_id,
questions.city_id,
questions.street_id,
questions.date,
questions.img,
users.login,
city.city_name,
street.street_name,
comments.countComment
FROM questions
INNER JOIN users ON questions.user_id = users.id
INNER JOIN city ON questions.city_id = city.id
INNER JOIN street ON questions.street_id = street.id
LEFT JOIN (
select id, count(*) as countComment
from comments GROUP BY questions_id
) comments ON comments.questions_id = questions.id
ORDER BY questions.date DESC
|