2010-10-27 15 views
1

plus facile à décrire en montrant une vue simplifiée de la structure de données existantes et le résultat souhaité ...les valeurs de base de données Déplacement mysql à partir d'un ou deux colonnes aux lignes d'entrées


ACTUELLEMENT ...

Element  Response   ElementType ElementNumber 

EntryVal.1 1234.56   EntryVal  1 
EntryDes.1 'Current Value' EntryDes  1 

EntryVal.2 4321.0    EntryVal  2 
EntryDes.2 'Another Value' EntryDes  2 

EntryVal.3 6543.21   EntryVal  3 
EntryDes.3 'Final Value'  EntryDes  3 

... DÉSIRÉ

Name   Value 

Current Value 1234.56 
Another Value 4321.0 
Final Value 6543.21 

(colonne élément divisé en colonne ElementType et ElementNumber dans l'espoir il pourrait aider)

ont essayé différentes sous-requêtes, mais n'a pas trouvé le secret.

Pourrait faire un peu de bouclage en PHP, mais j'espère qu'il y aura une approche plus simple et unique de requête MySQL.

Il existe d'autres colonnes comme l'emplacement impliquées, essayant ainsi de le garder propre.

+0

Quoi de structure de la table et la requête? – Saul

Répondre

2

Voilà comment je le ferais:

SELECT des.Response AS Name, val.Response AS Value 
FROM MyTable AS des JOIN MyTable AS val USING (ElementNumber) 
WHERE des.ElementType = 'EntryDes' AND val.ElementType = 'EntryVal'; 
1

Utilisation:

SELECT MAX(CASE WHEN t.elementtype = 'EntryDes' THEN t.response END) AS Name, 
     MAX(CASE WHEN t.elementtype = 'EntryVal' THEN t.response END) AS Value, 
    FROM YOUR_TABLE t 
GROUP BY t.elementnumber 

Vous pouvez garder elementnumber comme une colonne, dans le cas où vous avez besoin pour assurer l'ordre.