Ярлыки

.htaccess (4) тестирование (8) шаблоны проектирования (3) css (5) Debian (6) docker (2) Doctrine2 (6) Git (6) html (4) java (6) javascript (13) jquery (11) LFS (3) linux (23) mac os (4) mod_rewrite (2) MSSQL (4) MySQL (18) ORM Doctrine (17) patterns (3) PDO (3) perl (7) PHP (64) PHPUnit (8) Python (15) SEO (2) Silex (1) SimpleXML (1) SQL (14) ssh (4) Ubuntu (24) Yii1 (1) Zend Framework (19) ZendFramework2 (8)

понедельник, 2 апреля 2012 г.

SQL. Сортировка выборки с условием.

Допустим надо вывести список городов и чтобы при этом некоторые города оказались в начале списка.
SELECT * FROM city ORDER BY
CASE 
    WHEN name LIKE "%Москва%" THEN 1 
    WHEN name LIKE "%Санкт-Петербург%" THEN 2 
    ELSE 3 
END
Или для Doctrine1 DQL:
$q = Doctrine_Query::create()
    ->from('City')
    ->select('id, name')
    ->orderBy('CASE 
            WHEN name LIKE "%Москва%" THEN 1 
            WHEN name LIKE "%Санкт-Петербург%" THEN 2 
            ELSE 3 
        END')
   ->setHydrationMode(Doctrine::HYDRATE_ARRAY);
$city = $q->execute();

Комментариев нет:

Отправить комментарий