MySQL Как сделать заказ по названию столбца - PullRequest
0 голосов
/ 14 октября 2018

У меня есть две таблицы MySQL.В этом абстрактном примере я буду использовать их для объяснения моей проблемы:

Persons(person_id, name);
Competition(competition_id, first, second, third);

First, second и third относятся к person_id, и я хочу получить имена в этом порядке.Если я использую

SELECT name 
  FROM Persons
     , Competition 
 WHERE person_id = first 
    OR person_id second 
    OR person_id = third;

, имена сортируются по порядку их таблиц (обычно в том же порядке, что и по первичному ключу).Как я могу заказать их правильно?

Редактировать: Мне нужно ввести Compet_id и хочу получить таблицу с тремя именными строками в правильном порядке

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Решение в том, что требуется отдельная таблица.

Persons(person_id, name);
Mapper(pk_mapper_id, fk_competition_id, fk_person_id, rang)
Competition(competition_id);

Здесь можно заказать по номеру.

0 голосов
/ 14 октября 2018

Я думаю, вам просто нужно несколько объединений:

SELECT c.*, p1.name, p2.name, p3.name
FROM Competition c LEFT JOIN
     Persons p1
     ON p1.person_id = c.first LEFT JOIN
     Persons p2
     ON p2.person_id = c.second LEFT JOIN
     Persons p3
     ON p3.person_id = c.third;

Это помещает имена для данной строки в competition в той же строке.Это кажется разумным занятием.

РЕДАКТИРОВАТЬ:

Если вы хотите получить первое подходящее имя, вы можете использовать COALESCE():

SELECT c.*, COALESCE(p1.name, p2.name, p3.name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...