Je suis désolé, je ne sais pas comment cela s'appelle donc je n'ai également aucune idée de comment google it. Je vais essayer d'expliquer ce dont j'ai besoin. Il existe un scénario standard dans lequel j'ai une sorte de table de stockage d'objets et une autre table contenant des attributs d'objet. Un objet peut être associé à de nombreux attributs. Donc, fondamentalement, lorsque vous avez besoin de toutes les données sur un objet, vous rejoignez la table des attributs et recevez beaucoup de lignes. Dans un scenarion, je suis beaucoup d'objets interroger en même temps et faire une sous-sélection pour sélectionner un attribut:sql sélectionnez plusieurs lignes dans une seule colonne
SELECT basic data,
(SELECT some attribute from attributes table) AS attribute1
FROM objects table
JOIN something
JOIN something
...
Tout est OK, mais je dois sélectionner quelques autres attributs de cette liste. Quelle serait la meilleure façon de le faire? Je pense que l'écriture de deux sous-requêtes n'est pas une très bonne idée. J'ai entendu parler de certaines fonctions de pivot dans t-sql, mais je ne suis pas sûr si c'est ce dont j'ai besoin. Idéalement, les attributs seraient retournés sous la forme de nouvelles colonnes dans une seule ligne avec toutes les autres données, le nom d'attribut étant le nouveau nom de colonne et le texte d'attribut étant la nouvelle valeur de colonne. Mais les noms d'attribut peuvent contenir des espaces, etc., donc je ne suis pas sûr qu'ils puissent être utilisés comme noms de colonnes ou s'il est possible d'effectuer un tel choix. SQL est de Microsoft, mais il serait bien d'avoir une solution qui serait également supportée par d'autres moteurs de base de données.
Tous les pointeurs ou les mots clés google appréciés;]
S'il vous plaît écrire une entrée exemple et la sortie désirée. –
Ce que vous décrivez nécessitera un SQL dynamique car vous ne savez pas à l'avance combien de colonnes la sortie aura (cela dépend des données dans les tables). Alors, ayez un Google pour "SQL dynamique". Et, oui, un pivot ferait aussi le travail. –
Juré par le titre, ce que vous cherchez est un doublon de [question 4386346] [1], qui s'est avéré être un doublon de [question 194852] [2] et [question 6899] [3]. Mais peut-être que c'est seulement une partie de votre problème. [1]: http://stackoverflow.com/questions/4386346/sql-column-from-all-rows-returned-from-a-join-into-a-single-column [2]: http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-text-string [3]: http://stackoverflow.com/questions/6899/is-there-a-way-to -create-a-mssql-function-to-join-plusieurs-rows-from-a-subquery – TomaszK