MySQL union и заказ с помощью - PullRequest
       31

MySQL union и заказ с помощью

0 голосов
/ 02 сентября 2011

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

Неизвестный столбец 's.id' в 'условии заказа'

$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, который является идентификатором таблицы подписки?

Ответы [ 2 ]

2 голосов
/ 02 сентября 2011

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 есть столбец sid, используйте псевдоним для s.id.

.
0 голосов
/ 02 сентября 2011

"INNER JOIN подписаться s"

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

INNER JOIN `subscribe` AS `s`

если это не сработает, пожалуйста, опубликуйте вывод:

DESCRIBE subscribe;
...