8
w poniżej polecenia sql chcę użyć DESC
po WHEN 1 THEN i.id
linii. Chcę jeśli sortable
pole jest 1
następnie uporządkuj musi mieć jak tego polecenia,Mysql używać DESC w przypadku oświadczenie
ORDER BY i.id DESC
Mysql:
SELECT
SQL_CALC_FOUND_ROWS i.* ,
c.title AS category_name,
u.name,
u.family,
i.thumb_image,
CONCAT(u.name, ' ', u.family) AS author,
tumbnail_image_width,
tumbnail_image_height
FROM contents i
JOIN categories c ON c.id = i.category
JOIN users u ON u.id = i.posted_by
JOIN settings s ON s.portal = i.portal
WHERE
i.portal = '{$portal_id}'
AND CASE WHEN post_type = 4
THEN date(NOW()) BETWEEN i.from_dateTime AND i.to_dateTime
ELSE post_type = 1
END
AND i.t_status = 1
ORDER BY
CASE (SELECT sortable FROM settings)
WHEN 1 THEN i.id
WHEN 2 THEN i.date_time
WHEN 3 THEN i.order_display
END
LIMIT {$portalSettings['display_post_count']};";
'MAX (i.id) - i.id + 1'? – hjpotter92
Coś takiego może być bardziej elastyczne, mimo że używasz funkcji agregującej bez grupowania. Wystarczy użyć największej możliwej wartości id. Pamiętaj jednak, że możesz przesłać identyfikator do ciągu znaków i zrobić trochę skrzypiec, aby mieć ciągi posortowane w tej samej kolejności, co liczby (np. Może dodać zera wiodące) – Kickstart