У меня довольно простая задача, в которой мне нужно сначала выбрать строки с определенным полем со значением 1, затем со значением 2 и, наконец, со всеми остальными строками со значением 0.
Я использую объединение, чтобы узнать, какие элементы являются членами какой категории. Я думал, что выполнение 3 отборов и использование объединения объединят результаты в правильном порядке, но я ошибся:)
Мой SQL выглядит следующим образом:
SELECT * FROM tblcompanycategory
INNER JOIN tblcompany
ON tblcompany.idcompany = tblcompanycategory.idcompany
WHERE tblcompanycategory.idcategory = @category AND tblcompany.intpremium = 1
UNION
SELECT * FROM tblcompanycategory
INNER JOIN tblcompany
ON tblcompany.idcompany = tblcompanycategory.idcompany
WHERE tblcompanycategory.idcategory = @category AND tblcompany.intpremium = 2
UNION
SELECT * FROM tblcompanycategory
INNER JOIN tblcompany
ON tblcompany.idcompany = tblcompanycategory.idcompany
WHERE tblcompanycategory.idcategory = @category AND tblcompany.intpremium = 0
Мои результаты не упорядочены с 1, затем 2, а затем 0 .. Что я здесь не так делаю ??
* РЕШЕНИЕ *
Спасибо за помощь, ребята! Ниже приведен окончательный вариант SQL, который я использую.
SELECT * FROM tblcompanycategory
INNER JOIN tblcompany
ON tblcompany.idcompany = tblcompanycategory.idcompany
WHERE tblcompanycategory.idcategory = @category
ORDER BY CASE tblcompany.intpremium WHEN 1 THEN 0 WHEN 2 THEN 1 WHEN 0 THEN 2 END