select color
from color
where in_stock=1
order by
id = id_from_get desc,
find_in_set(id, ids_from_) desc,
popularity desc
order by case when id = :your_get_id then 1 else 2 end, popularity desc
events.name LIKE :search || events.description LIKE :search || keywords.name LIKE :search || countries.countries LIKE :search
where 609 in (col1,col2,col3 ...)
SELECT DISTINCT events.id, events.name as event_name, events.date_start, events.date_end, events.country_id, events.description, events.day_1, events.day_2, events.month_1, events.month_2, events.year_1, events.year_2, events.is_present, links.links, images.images, countries.countries, countries.country_ids, country_to_cluster.year_start FROM events
LEFT JOIN (SELECT countries.id, GROUP_CONCAT(countries.id) as country_ids, event_to_country.country_id as country_id, event_to_country.event_id, GROUP_CONCAT(countries.name) as countries FROM countries LEFT JOIN event_to_country ON countries.id = country_id GROUP BY event_to_country.event_id) as countries ON events.id = countries.event_id
LEFT JOIN (SELECT event_id, GROUP_CONCAT(link) as links FROM links GROUP BY event_id) AS links ON events.id = links.event_id
LEFT JOIN (SELECT event_id, GROUP_CONCAT(name) as images FROM images GROUP BY event_id) AS images ON events.id = images.event_id
LEFT JOIN keywords ON events.id = keywords.event_id
LEFT JOIN country_to_cluster ON country_to_cluster.country_id = events.country_id
AND ((events.year_1 >= country_to_cluster.year_start AND events.year_1 <= country_to_cluster.year_end)
or (country_to_cluster.year_start is null and country_to_cluster.year_end is null ))
WHERE (country_to_cluster.cluster_id = :cluster_id)
ORDER BY events.year_1 ASC
LIMIT 30
SELECT n.id, n.text
FROM news n
JOIN news_tags nt ON nt.news_id = n.id
JOIN tags t1 ON t1.id = nt.tag_id AND t1.name in ("животные", "кроты" /*перечисляете свои теги*/)
group by n.id, n.text
having sum(distinct case t1.name when "животные" then 10 else 1 end) >= 10
Мульти ордер делается так:
MyTable::orderBy('coloumn1', 'DESC')
->orderBy('coloumn2', 'ASC')
->get();
или так:
MyTable::orderByRaw("coloumn1 DESC, coloumn2 ASC");
->get();