Mysql сложный запрос - PullRequest
0 голосов
/ 11 ноября 2010

Может ли кто-нибудь помочь мне в этом запросе?

Имея такую ​​структуру таблицы:

id |Attribute | value 
-------------------
 1 |name      | user1
 2 | id       |    100
 3 |name      | user2
 4 | id       | 101
 5 |name      | user1
 6 | id       | 103

Я хочу вывод, подобный этому:

name | id 
------------
user1 | 100
user2 | 102
user3 | 103

Ответы [ 2 ]

1 голос
/ 11 ноября 2010

Предполагается, что записи id и name всегда чередуются:

SELECT  mn.value, mi.value
FROM    mytable mn
JOIN    mytable mi
ON      mi.id = 
        (
        SELECT  id
        FROM    mytable mii
        WHERE   mii.attribute = 'id'
                AND mii.id > mn.id
        ORDER BY
                mii.id
        LIMIT 1
        )
WHERE   mn.attribute = 'name'

Я даже не смею спросить, чья идея была создать такой стол.

0 голосов
/ 11 ноября 2010

Я думаю, вы должны рассмотреть случай, когда как-то изменить эту "структуру". может быть, что-то вроде помогает ... Не проверял это. По сути, я просто предлагаю СЛУЧАЙ КОГДА.

SELECT attribute,value 
MAX(CASE when (Attribute = name) then value end) AS name
MAX(CASE when (Attribute = id) then value end) AS id
FROM table 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...