8
nel comando sql sottostante voglio usare DESC
dopo la riga WHEN 1 THEN i.id
. voglio se sortable
campo è 1
per poi dai deve essere hanno come questo comando,Mysql usa DESC nell'istruzione case
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
Qualcosa del genere potrebbe essere più flessibile, anche se in questo caso si sta utilizzando una funzione di aggregazione senza un gruppo. Solo usando il maggior valore possibile di id lo farebbe. Tuttavia ricorda che potresti dover eseguire il cast dell'ID su una stringa, e fare qualche giocherellando per poi avere le stringhe ordinate nello stesso ordine dei numeri (ad esempio, magari aggiungere gli zeri iniziali) – Kickstart