Вытащить записи из базы + поднять наверх с известными id

Духовность™

Продвинутый новичок
Вытащить записи из базы + поднять наверх с известными id

Привет.

Нужно вытащить из базы записи, Н-ное кол-во. С этим проблем нет :)

Но кроме всего прочего имеется массив с некоторыми id записей из этой таблицы - array(12, 56, 34).

Нужно сделать так, что бы записи с id, которые перечислены в массиве, присутствовали в результате (шли первыми).

Одним запросом такое возможно сделать? Или всеже придется сначала одни записи вытаскивать, а потом другие?
 

Духовность™

Продвинутый новичок
делаю UNION:

PHP:
(SELECT
    ...
FROM
    articles
INNER JOIN
    rubrics
ON
    ... 
WHERE
    ... )   

UNION    

(SELECT
    ...
FROM
    articles
INNER JOIN
    rubrics
ON
    ...
WHERE
    ...
AND
    articles.id_article IN (33,26,17)
)
но дело в том, что результат сортируется по id_article почему-то. А мне этого не нужно. Мне нужно "как есть" получить результат в том объединении, где IN (33,26,17) стоит.
 

Духовность™

Продвинутый новичок
Mr_Max, я просто не пойму, как тут FIND_IN_SET может помочь...

Мне нужно достать из таблицы 6 записей, допустим. Но 3 записи, идентификаторы которых перечислены в массиве, нужно тоже вытащить и поместить в начале результата.
 

Gas

может по одной?
triumvirat
после своего запроса добавь
order by find_in_set(id_article, '17,26,33') desc;
и id-шники будут идти в порядке 33,26,17,остальные
 

Gas

может по одной?
блин, ну Mr_Max ссылку на описание ж дал что она делает, а order by сортирует её результаты.
 

Духовность™

Продвинутый новичок
я понял что функция делает. я не понял order by поведение.

И ЕЩЁ!!! записи сортируются в убывающем порядке, а мне нужно наоборот!! помогите пжалуйста!! :)
 

Gas

может по одной?
triumvirat
отвлекись на 5 минут, попей чайку, потом вернись к этой задаче, подумай.
ты ж не глупый человек.

И обрати внимание на порядок в моём посте в find_in_set и как я написал будет в результате. Такой реверс приходится делать из-за лишних записей, которых нет в статическом списке id.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
triumvirat
Попытки составить запрос будут?

-~{}~ 19.12.07 14:18:

так чтоб без абстракций :)
 

Духовность™

Продвинутый новичок
Gas
Mr_Max
у меня при запросе
PHP:
  ORDER BY   find_in_set(id_article, "33,29,26") DESC
результат получается такой:

Код:
Array
(
    [0] => Array
        (
    [id_article] => 26
    ... 
        )

    [1] => Array
        (
    [id_article] => 29
    ...
        )

    [2] => Array
        (
    [id_article] => 33
    ...
        )

    [3] => Array
        (
    [id_article] => 15
    ...
        )

)
т.е. первые 3 элемента сортируются по возрастанию id, а надо наоборот.

А четвертый элемент массива - это самый первый элемент из выборки не по статическому списку. Он выбирается также исходя из возрастающей сортировки, а надо наоборот.

ASC сортировка не помогает - выводится не то, что нужно.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
triumvirat
Полный запрос можете показать?
 

Gas

может по одной?
triumvirat
тебе нужно написать find_in_set(id_article, "26,29,33") desc чтоб получить 33,29,26
По поводу сортировки остальных элементов требований никаких не было.

Лучше пойми один раз весь механизм, пригодится не раз.
 
Сверху