Запросить то же самое в нескольких столбцах? - PullRequest
1 голос
/ 04 августа 2011

У меня есть таблица, где есть несколько очков для пар.

Как это

P1    P2    Score   Date
John  Mark  43      2011-01-01
Sinan Ash   53      2011-02-03
...
John  Suzie 34      2011-10-10
Ash   Sinan 54      2011-11-11
sinan suzie 42      2011-12-12
...

Итак, я хочу получить все оценки за Синан и его партнера. Я пытаюсь получить что-то похожее:

partner - score
ash       53
ash       54
suzie     42

Я пытаюсь сделать это с помощью запроса ниже. Есть ли лучший способ сделать запрос, чем

select * from table WHERE P1 = 'sinan' OR P2 = 'sinan'

Это эффективно? Может быть, есть лучший способ сохранить данные в первую очередь. Есть предложения?

Ответы [ 2 ]

3 голосов
/ 04 августа 2011

Настоящий трюк заключается в чередовании партнера между P1 и P2.Самый простой подход может быть:

SELECT P2 AS partner, Score
    FROM table
    WHERE P1 = 'sinan'
UNION ALL
SELECT P1 AS partner, Score
    FROM table
    WHERE P2 = 'sinan'
0 голосов
/ 04 августа 2011

Вот пример использования оператора CASE

SELECT CASE WHEN P1 = 'Sinan' THEN P2 ELSE P1 END AS Partner, Score
FROM ScoreTable
WHERE P1 = 'Sinan' OR P2 = 'Sinan'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...