Помогите с SQL

Компьютеры MySQL базы данных sql

Есть запрос:
SELECT t1.id, t1.name AS `alt`, t2.parent, COUNT(`cat`.id) AS `children`
FROM t1
LEFT JOIN t2 ON t1.id=t2.id_cat
LEFT JOIN t1 AS `cat` ON t1.id=`cat`.parent_to
GROUP BY t1.id ORDER BY `alt`

Запрос работает, как надо, но сюда необходимо добавить условие WHERE `children`<>0
Внимание вопрос: как и куда его вставить?

После блока FROM - ошибка, после второго LEFT JOIN - ошибка. Как щё?
Можно сделать select * from (етот запрос) as s1 where children<>0, но может есть способы менее нагружающие СУБД?

Примечание:
> так куда where надо добавить
У тебя в мануале нету LEFT JOIN - ов, так что не катит. Тем более, я ж написал, что поставив WHERE после блока FROM ошибка выдаётся

Примечание:
> Вставь перед GROUP BY
*facepalm*

На самом деле, я уже переработал движок, отказавшись от условия. Спасибо всем, кто поспособствовал ;)

Примечание:
> и WHERE должно быть перед GROUP, а не после FROM, не так ли?
Должно-то должно, да суть в том, что всё равно, ошибка с етим WHERE. В общем, я просто сложную задачу поставил. Надо было хотя бы до трёх столбцов упростить и убрать один LEFT JOIN - может тогда б кто-нть суть понял. Всё равно, спасибо за подсказки ;)

Примечание:
Sergey_A, ответ не проверял, но судя по манам ответ близок к истине. За ето и ЛО
Ответы:
синтаксис в мане посмотрите, ключевые слова должны следовать в строгом порядке:
SELECT
FROM
WHERE
GROUP BY
HAVING
ORDER
LIMIT
LEFT JOIN относится к разделу FROM, а значит надо после него, и до GROUP.
если не работает, значит косяк в другом, или надо просто переформирвоать запрос немного по другому (без JOIN)
WHERE `children`<>0
Вставь перед
GROUP BY
Здесь надо ставить не WHERE, а HAVING -
HAVING children<>0
ставить после GROUP BY и перед ORDER BY


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.