2016-05-24 3 views
0

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

SELECT team_id,result from games where team_id=17; 

В таблице игр у меня есть результаты всех вышлет, таких как

id  team_id team result 
21  17 India w 
22  17 India l 
23  17 India l 
24  17 India w 

все, что я хочу, чтобы получить эти данные в качестве

team_id result1 result2 result3 result4 
    17  w  l  l  w 

Если кто-нибудь есть идеи, как мог я делаю это?

+0

У вас есть еще одна таблица для команд? –

+5

Google: 'MySQL Pivoting' – sagi

+1

http://stackoverflow.com/questions/7674786/mysql-pivot-table –

ответ

0

Для ограниченного числа результатов, скажем, до 4-х, вы могли бы сделать что-то вроде этого:

SELECT team_id, 
     MAX(CASE WHEN rn = 1 THEN result END) AS result1, 
     MAX(CASE WHEN rn = 2 THEN result END) AS result2, 
     MAX(CASE WHEN rn = 3 THEN result END) AS result3, 
     MAX(CASE WHEN rn = 4 THEN result END) AS result4 
FROM (
    SELECT team_id, result, 
     @row_number := @row_number + 1 AS rn 
    FROM games 
    CROSS JOIN (SELECT @row_number := 0) AS vars 
    WHERE team_id = 17 
    ORDER BY id) AS t 
+1

Не похоже, что это ограниченное количество результатов .. – sagi

0

Вы можете попробовать mysql group_concat, чтобы получить все результаты в поле с запятые, может быть, это поможет вам тоже ...

0

а «грязная» (а вообще - в том, что оно не ограничивается числом результатов) способ сделать это было бы:

SELECT team_id, GROUP_CONCAT(result) AS results FROM GAMES ... 

Так что results будет содержать w,l,l,w. Тогда (я заметил, что ты меченый пост, используя «PHP»), вы можете использовать что-то вдоль линий explode(), чтобы получить массив из результата

$results = explode(',', $row[1]); 
Смежные вопросы