2013-06-04 4 views
2

j'ai une table MySQL qui ressemble à ceci:MySQL sélectionnez le nom de la colonne et de la valeur en tant que champ

id | PO | DAP | MEDIA 
---|----|-------|------ 
1 | 2 | 34 | 64 
2 | 6 | 53 | 23 

Je voudrais pouvoir interroger obtenir plusieurs lignes, une pour chaque colonne. Par exemple:

SELECT column_name as column, column_value as value FROM my_table; 

Ce qui me donnerait:

PO=2,DAP=34,MEDIA=54,PO=6,DAP=53,MEDIA=23 

Qu'aurais-je besoin d'utiliser pour formuler une requête comme celui-ci?

+0

Je ne vois pas le problème, même 'select * from my_table' vous donnera exactement le résultat demandé. Le formater comme ça est la responsabilité de votre propre code, pas celui de MySQL, alors faites le en PHP ou en C# ou tout ce que vous utilisez. –

+1

Ceci est appelé une requête de table pivotante - mais pourquoi ne pas gérer la logique d'affichage au niveau de l'application, par exemple. avec une simple boucle PHP. – Strawberry

+0

'SELECT PO, DAP, MEDIA FROM YOUR_TABLE' avez-vous essayé? –

Répondre

2

Vous devez d'abord CONCAT les données de chaque champ spécifié et appliquer GROUP_CONCAT sur le résultat.

Recherche

SELECT GROUP_CONCAT(temp_col) FROM 
(
    SELECT 1 as 'temp_id', 
    CONCAT(
     CONCAT('PO=', PO), 
     ',', 
     CONCAT('DAP=', DAP), 
     ',', 
     CONCAT('MEDIA=', MEDIA) 
    ) AS 'temp_col' 
    FROM test 
) temp 
GROUP BY temp_id 

Départ SQLFIDDLE

0

Vous ne savez pas exactement ce que vous voulez dire. Mais cela se fait traditionnellement de cette manière

SELECT * FROM my_table; 

Vous obtiendrez votre tableau comme celui-ci

array(0=>array('PO'=>2,'DAP'=>34,'MEDIA'=54), 1=>array('PO'=>6, 'DAP'=>53, 'MEDIA'=> 23)) 

.. comme si.

Questions connexes