MySQL ORDER BY FIELD, содержащий строку чисел - PullRequest
1 голос
/ 13 ноября 2011

Я пытаюсь изменить порядок get_previous_post_sort/get_next_post_sort для пользовательской навигации по типу поста на основе порядка этих постов, хранящихся в поле в базе данных (которое устанавливается через другое настраиваемое поле в другом месте).

По умолчанию get_previous_post_sort/get_next_post_sort Порядок только начинается с даты, когда эти сообщения были введены, но мне нужно, чтобы они были упорядочены по настраиваемому полю в базе данных.

Поле в базе данных хранит идентификаторы сообщений изпосты в том порядке, в котором они мне нужны, должны быть такими: 1746,1741,1751,1755,1758,1761,1749,1764,1776,1767,1781,1770,1773,1784,1787,1790,1793,1798,1801,1804,1807,1810,1813,1816,1819,1822,1825,1828,1831,1834,1837,1840,1843,1846

Мне удалось вытащить эту строку чисел изнастраиваемое поле, но у меня возникли проблемы с ним, фактически влияющие на мои предыдущие / следующие ссылки.Запрос в выводе отладки выглядит солидно:

SELECT p.*  
FROM wp_posts AS p  
INNER JOIN wp_postmeta AS m ON p.ID = m.post_id  
WHERE p.post_date < '2011-11-09 17:08:32'  
AND p.post_type = 'story-images'  
AND p.post_status = 'publish'  
AND m.meta_key = 'editorial'  
AND m.meta_value = 771  
ORDER BY FIELD(p.ID,1627,1624,1630,1633,1636,1639,1642,1645,1648,1653,1656,1659,1662,1665,1668,1671,1694,1730,1697,1700,1703,1706,1709,1712,1715,1718,1721,1724,1727)

Вот мой фактический код, который я использую для фильтрации всего (что выплевывает этот запрос): http://pastebin.com/ceiib5Hf

Это должно сделатьэто понятнее.Спасибо за ответы до сих пор!

Ответы [ 2 ]

2 голосов
/ 13 ноября 2011

Вы можете использовать FIELD(...):

ORDER BY FIELD(p.ID,1746,1741,...,1840,1843,1846)
1 голос
/ 13 ноября 2011

Поместите эти "магические" числа во вторую таблицу, которая состоит из двух строк:

  • Магическое число
  • Порядок сортировки

Теперь присоединяйтесь ктаблица против этой второй таблицы, и порядок по порядку сортировки.Это упростит обслуживание вашего запроса и цифр.

...