Ok, donc je sais que je pourrais obtenir alésé même pour suggérer une telle chose, mais il m'a curieux ...MySQL: LEFT JOIN ou UNION table et définir la valeur de colonne comme nom de colonne?
Supposons que j'ai une table comme:
content
---------------
| id | status |
et une table comme celui-ci :
attributes
---------------------------
| id | pid | name | value |
où certains attributs pourraient être
| 1 | 1 | status | published |
| 2 | 1 | viable | yes |
Est-il possible de faire une requête afin que la valeur de la colonne NAME des attributs soit représentée comme un nom de colonne?
Exemple:
SELECT a.name AS {a.name value} FROM content c LEFT JOIN attributes a ON a.pid = c.id
Alors, quand je lance à travers les résultats que je pouvais faire quelque chose comme
foreach($result as $r){
echo $r->viable; //yes
echo $r->status; //published
}
Je sais que cela ne suit pas databasing relationnelle, mais il serait utile de moi quelques attributs superflus. L'autre option à laquelle je pensais était de stocker les données sous la forme d'une chaîne sérialisée, mais cela me fait grincer des dents.
Connaissez-vous tous les noms à utiliser comme des colonnes à l'avance, ou sont-ils dynamiques? –
Ce que vous demandez est appelé un "tableau croisé dynamique" http://stackoverflow.com/search?q=mysql+pivot+table http://stackoverflow.com/search?q=%5Bmysql%5D+rows+ aux colonnes + –
Elles sont dynamiques, donc je n'ai pas de liste de ce qu'elles seraient à l'avance. –