2015-06-19 3 views
0

Я пытаюсь получить результаты, упорядоченные по значению столбца. У меня есть этот основной запрос:Получить результат SQL, упорядоченный по значению столбца

SELECT `product_id`, 
     (SELECT `name` 
     FROM `specifications` s 
     WHERE `specification_id` = sp.`specification_id`) AS Specification, 
     `value` 
FROM `specs-product` sp 
WHERE `product_id` = '4' 
     AND (`specification_id` = '88' 
       OR `specification_id` = '103' 
       OR `specification_id` = '18' 
       OR `specification_id` = '15' 
       OR `specification_id` = '157' 
       OR `specification_id` = '89' 
       OR `specification_id` = '9' 
       OR `specification_id` = '223' 
       OR `specification_id` = '224' 
       OR `specification_id` = '29' 
       OR `specification_id` = '87' 
       OR `specification_id` = '219' 
       OR `specification_id` = '218' 
       OR `specification_id` = '220') 

Я имя столбца в таблице specifications называется priority. Мне нужно получить результат, упорядоченный по этим значениям приоритета.

Я попытался добавить order by s.'priority' Но не работал. Как я могу это сделать?

Структура таблицы следующим образом:

specifications

+------------------+------+----------+ 
| specification_id | name | priority | 
+------------------+------+----------+ 
| 1    | abc |  5 | 
| 2    | xxxx |  2 | 
| 3 ababab   | 3 |   | 
+------------------+------+----------+ 

PRODUCTS ТАБЛИЦА

+------------+------------+--+ 
| product_id | reference | | 
+------------+------------+--+ 
|   1 | abc  | | 
|   2 | xxxx  | | 
|   3 | ababab  | | 
+------------+------------+--+ 
+0

Что вы имеете в виду, что не работает? Каким типом данных является столбец 'priority'? Если это строка, она будет сортироваться лексикографически, поэтому вам нужно будет отличить ее как целое. – bernie

+0

Это 'INT'. Итак, я должен что-то изменить? – user1012181

+0

Можете ли вы дать структуру таблицы для обеих таблиц? –

ответ

1

Добавить

order by sp.'priority' 

Если предположить, что t находится в таблице. Если это не сработает, нам нужна ваша схема.

Редактировать

SELECT `product_id`, 
s.name AS Specification, 
`value` 
FROM `specs-product` sp 
inner join `specifications` s on s.`specification_id` = sp.`specification_id` 
WHERE `product_id`='4' 
AND 
(s.`specification_id`='88' or 
s.`specification_id`='103' or 
s.`specification_id`='18' or 
s.`specification_id`='15' or 
s.`specification_id`='157' or 
s.`specification_id`='89' or 
s.`specification_id`='9' or 
s.`specification_id`='223' or 
s.`specification_id`='224' or 
s.`specification_id`='29' or 
s.`specification_id`='87' or 
s.`specification_id`='219' or 
s.`specification_id`='218' or 
s.`specification_id`='220') 
order by s.priority 
+0

'priority' - это столбец в таблице' спецификация' – user1012181

+0

Отредактировано с правильным ответом –

+0

Ошибка: 'Столбец 'спецификация_id' в где предложение неоднозначно' – user1012181

Смежные вопросы