Не могу сделать рабочий SQL запрос

kolyaka105

Участник
Всем привет, сразу к делу, пишу мониторинг, не получается сделать запрос что бы выводились закрепленные 3 проекта вверху списка
Сейчас запрос такой
Код:
SELECT * FROM db_projects WHERE status = '$status' AND cat = '$id_cat' ORDER BY zakrep_time >= UNIX_TIMESTAMP() DESC, date_up DESC, id DESC
Пробовал так
Код:
SELECT * FROM db_projects WHERE status = '$status' AND (SELECT zakrep_time >= UNIX_TIMESTAMP() FROM db_projects WHERE zakrep_time >= UNIX_TIMESTAMP() LIMIT 3) ORDER BY date_up DESC, id DESC
Ничего не получается
 

kolyaka105

Участник
а почему у тебя условие написано после ORDER BY ?
SQL:
SELECT * FROM db_projects WHERE status = '$status' AND cat = '$id_cat' AND zakrep_time >= UNIX_TIMESTAMP() ORDER BY zakrep_time DESC,date_up DESC LIMIT 3
Сейчас он выводит только закрепленные проекты, а надо что бы выводил все проекты и первые 3 были закреплены
 

pligin

Команда форума
Администратор
а надо что бы выводил все проекты и первые 3 были закреплены
ты походу путаешь причинно-следственную связь...
у тебя два объекта:
- список всех проектов
- список закрепленных проектов
Значит должно быть два запроса либо в один запрос вложить подзапрос по закрепленным и их отправить в отдельный массив
 

kolyaka105

Участник
ты походу путаешь причинно-следственную связь...
у тебя два объекта:
- список всех проектов
- список закрепленных проектов
Значит должно быть два запроса либо в один запрос вложить подзапрос по закрепленным и их отправить в отдельный массив
если делать 2 запроса получается каша
 

pligin

Команда форума
Администратор
если делать 2 запроса получается каша
так сделай один запрос по извлечению всех проектов, отсортируй по дате поднятия (я тебе дал запрос), а при помощи PHP закрепи проекты.
Т.е. ты выбираешь все проекты и помещаешь их в массив. Потом в нужном месте для отображения перебираешь массив и выводишь данные, первые три элемента отмечаешь другим цветом (поднятые)
 

pligin

Команда форума
Администратор
даже можешь их в массив не загонять, сразу после выборки делаешь перебор while и внутри цикла укладываешь условие, чтобы первые три элемента были выделены
 

pligin

Команда форума
Администратор
Не пользуюсь вайлом, только foreach
если ты используешь ООП, то не вопрос. Но мне кажется ты этого не делаешь.
Зачем использовать память для дублирования данных?
while сразу перебирает все извлеченные строки из БД
для foreach ты должен сначала загнать данные из бд в массив, а потом перебрать - это дополнительный расход памяти
 

kolyaka105

Участник
если ты используешь ООП, то не вопрос. Но мне кажется ты этого не делаешь.
Зачем использовать память для дублирования данных?
while сразу перебирает все извлеченные строки из БД
для foreach ты должен сначала загнать данные из бд в массив, а потом перебрать - это дополнительный расход памяти
Делаю на фк и сёравно не могу сделать эти выборки
 

pligin

Команда форума
Администратор
Делаю на фк и сёравно не могу сделать эти выборки
вот видишь к чему приводит "гадание на кофейной гуще"... поэтому я тебе не дал ни одного конкретного ответа, т.к. вопрос был задан "в общем"
Правильно вопрос звучит так:
- вот структура таблицы с пятью записями (бэкап)
- как выбрать из нее все записи и отсортировать записи по полю "такому-то" и первые три записи выделить?
 

serega393

Местный
SQL:
SELECT * FROM db_projects WHERE status = '$status' AND cat = '$id_cat' ORDER BY zakrep_time DESC, date_up DESC, id DESC
 

serega393

Местный
далее foreach и отбрасывай те что не подходят под zakrep_time используя html
 

pligin

Команда форума
Администратор
Я уже всё перепробовал, поэтому и написал сюда, и смысл делать это через php если можно через запрос сразу сделать)
ты дурак
Ахаха, и проекты постоянно будут в закрепе висеть
ты дебил

запрос только выбирает нужные данные сортирует их так это нужно... данный запрос делает все. что тебе нужно остальное нужно в php уже делать...
конец разговорам. если хотел "сделайте за меня", то так и напиши, не пытайся умничать хуйней.
вопрос в мусор, т.к. он давно был решен, а ТС просто тупой
 
Верх