2010-11-11 5 views
0

Quelqu'un peut-il m'aider dans cette recherche?Requête complexe Mysql

ayant une structure de table comme ceci:

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

Je veux sortie comme ceci:

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

Votre structure de table me donne des cauchemars la nuit. –

+0

Comment dites-vous quel id est associé au nom? –

Répondre

1

En supposant id et name dossiers toujours entrelacent:

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' 

Je ne même pas Oser demander à qui l'idée était de concevoir une table comme ça.

0

Je pense que vous devriez regarder dans le cas où réorganiser cette «structure» en quelque sorte. peut-être quelque chose comme aide ... N'a pas vérifié cela. Fondamentalement, je ne fais que suggérer CAS.

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