1 Востаннє редагувалося funivan (18.10.2012 11:50:10)

Тема: Order By - задачка на 5

Всім привіт. В проекті попалась цікавв реалізація ось такої задачі на MySql

Умова

  • Є таблиця users (Користувачі)

  • У кожного юзера є місце знаходження users.country (Країна користувача)

  • Країни позначаються так UA, RU, EN, US,

  • У нас може бути як 1н так і 1000 юзерів у таблиці

Необхідно вивести 10 користувачів так що б спочатку ішли юзери у яких країна UA за допомогою 1го селекта

Здається все вірно пояснив ;) Якщо щось питайте.

2

Re: Order By - задачка на 5

Це 2 селекти?
[code=sql]
SELECT ... WHERE country='UA'
UNION
SELECT ... WHERE country!='UA'[/code]

Подякували: Vo_Vik, funivan2

3

Re: Order By - задачка на 5

Підтримую Реплейс. Чомусь дуже багато людей ніколи не чули про таку команду як UNION.

4

Re: Order By - задачка на 5

Так це один з варіантів. Я в деяких випадках юзав такі запити)
Но є ще одне елегантне рішення ;) Покищо чекамєо нових відповідей)

Подякували: Replace1

5

Re: Order By - задачка на 5

Можна сортувати по списку
Щось типу ORDER BY FIND_IN_SET(country, 'UA');

6 Востаннє редагувалося Vo_Vik (17.10.2012 21:55:14)

Re: Order By - задачка на 5

або просто ORDER BY country='UA' DESC;

Подякували: funivan, Replace, Patron3

7

Re: Order By - задачка на 5

або просто ORDER BY country='UA' DESC;

Вуаля =) Задачу розвязали )) Супер.
Досить просто підставити в умову сотування

ORDER BY country='UA' DESC limi 10;

Mysql спочатку покаже запити в яких країна UA пізніше всі наступні. Думаю тема буде корисна тим у кого появляються подібні задачі ;)

8

Re: Order By - задачка на 5

Елегантно.
Ім'я теми потрібно змінити. Може хтось через Google знайде. :)