Соединение MySQL и порядок с помощью

Приведенный ниже код работает, но когда я изменяю Order by id на Order by s.id, я получаю эту ошибку

Неизвестный столбец 's.id' in 'order clause'

$construct = "SELECT child.* FROM products child LEFT JOIN products parent on parent.name=child.parent INNER JOIN subscribe s ON (s.productid = parent.id) WHERE s.username='$logged' AND s.type='0' UNION SELECT child.* FROM products child LEFT JOIN products parent on parent.sid=child.sid INNER JOIN subscribe s ON (s.productid = parent.id) WHERE s.username='$logged' AND parent.keyword != child.name AND s.type='1' ORDER BY s.id DESC"; 

Как я могу изменить код, поэтому он упорядочен с помощью s.id, который является идентификатором таблицы подписки?

MySQL пытается применить ORDER BY к UNION, но UNION имеет только child столбцы (без префикса child. ), в UNION нет s.id Но вы можете добавить один:

 SELECT child.*, s.id as sid ... UNION SELECT child.*, s.id as sid ... ORDER BY sid DESC 

Вы должны указать ему псевдоним, поскольку UNION отменит имя таблицы или префикс псевдонима. Если в child s.id есть столбец sid тогда используйте что-то другое в качестве псевдонима для s.id

"INNER JOIN subscribe s"

Похоже, что вы хотите:

 INNER JOIN `subscribe` AS `s` 

если это не работает, отправьте сообщение:

 DESCRIBE subscribe;