Невозможно заказать конкретный идентификатор - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь упорядочить результат для определенного role_id заказа, поэтому:

$query = "SELECT p.*
FROM player_career cr
LEFT JOIN player p ON p.id = cr.player_id
WHERE team_id = :team_id AND season_id = :season_id
ORDER BY p.role_id (1, 2, 3, 4)";

Я получаю:

Syntax error or access violation: 1305 FUNCTION p.role_id does not exist

в чем ошибка?

Ответы [ 2 ]

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

Если вам нужно отсортировать строки на основе role_id, просто используйте:

$query = "SELECT p.*
FROM player_career cr
LEFT JOIN player p ON p.id = cr.player_id
WHERE team_id = :team_id AND season_id = :season_id
ORDER BY p.role_id";

Поведение по умолчанию в порядке возрастания, поэтому 1 будет сортироваться до 2. Если вы хотите иметь обратный вывод, используйте нисходящий порядок: ORDER BY p.role_id DESC.

Если вам нужно отфильтровать идентификаторы ролей, чтобы получить только те, которые вы указали в качестве условия, примените его в WHERE, но помните об операторе IN:

WHERE team_id = :team_id AND season_id = :season_id AND p.role_id IN (1,2,3,4)

В SQL вы вызываете функцию и указываете ее параметры в скобках, что означает, что p.role_id(...) будет вызовом функции.

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

Вы пытаетесь вызвать функцию, которая не существует p.role_id (1, 2, 3, 4). Очень трудно понять, что (1,2,3,4) следует делать, хотя по умолчанию порядок ORDER BY возрастает, поэтому просто опустите (1,2,3,4).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...