Как получить ручное значение ORDER BY из Query? - PullRequest
0 голосов
/ 06 июня 2018

Я применил запрос в коде для получения значений и получил значения, но эти значения пришли случайным образом, а не 'ORDER BY'.Итак, как получить эти значения, как я определил?

Ниже мой запрос, и это o / p:

"""select distinct src, field_description, value from ir_translation, ir_model_fields where module='P2N_Sales' and ir_translation.src = ir_model_fields.field_description and model='sale.mail.wizard' and ir_model_fields.name in ('status','order','customer','pet_name','services', 'amount','msg');"""

enter image description here

1 Ответ

0 голосов
/ 08 июня 2018

Порядок, в котором вы вводите допустимые значения в предложении "WHERE ir_model_fields.name in ()", никак не влияет на конечный результат.Вам нужно добавить предложение order by, если вы хотите, чтобы результаты запроса были в определенном порядке.

Поскольку требуемый порядок не является стандартным алфавитным, вам необходимо создать свой собственный порядок.

Если у вас где-то есть таблица с этими значениями, вы можете добавить в нее пользовательский столбец порядка сортировки, присоединиться к этой таблице и отсортировать по столбцу порядка сортировки.

Если естьэто не подходящая таблица, вам нужно создать свое собственное сортируемое значение в предложении ORDER BY, что-то вроде этого.В столбце else все остальные значения находятся внизу.

<rest of query here>
ORDER BY
case when ir_model_fields.name = 'status' then 1
     when ir_model_fields.name = 'order' then 2
     when ir_model_fields.name = 'customer' then 3
     when ir_model_fields.name = 'pet_name' then 4
     when ir_model_fields.name = 'services' then 5
     when ir_model_fields.name = 'amount' then 6
     when ir_model_fields.name = 'msg' then 7
     else 8 
     end
...