J'écris une page Web qui affiche les notes des étudiants dans un ancien format de livre de grade, c'est-à-dire, il affiche le nom de l'étudiant, puis leur score pour chaque affectation) répète ensuite une rangée par élève. Mes tableaux sont mis en place comme suit (raccourci aux informations nécessaires):Sybase SQL Dynamic Select (Jointures?) Base de données relationnelle
Tableau: Affectation
* Assignment_PK (clé primaire)
* Assignment_Name
Tableau: Étudiant
* Student_PK (clé primaire)
* nom_etudiant
Tableau: StudentAssignment
* SA_PK (clé primaire
* Student_FK (Student.Student_P K)
* Assignment_FK (Assignment.Assignment_PK)
* Le score
Je suis en train d'écrire une instruction SELECT qui imprimera le nom des élèves et le score pour chaque mission. Le problème que je rencontre est que si je sélectionne Score en tant que colonne, je n'obtiens le score que pour une assignation, car dans mon WHERE, Assignment_FK = Assignment_PK ne me permet que de choisir un Score pour une colonne. Je suis assez nouveau pour les bases de données relationnelles et je pourrais vraiment utiliser de l'aide sur la meilleure façon de résoudre ce problème. Une suggestion a été que j'écris une instruction SELECT pour sélectionner tous les étudiants dans une table, puis faire une ligne foreach dans la table et lui faire sélectionner les scores et les placer dans la colonne appropriée. Cela semble être un processus lent et inutile. Existe-t-il un moyen plus simple d'utiliser JOINS? Ou écrire un meilleur SELECT?
rechercher des tables PIVOT. c'est beaucoup plus facile si vous connaissez le nombre d'affectations à l'avance ... (ce qui est une grande FI). – Randy
Une table PIVOT était exactement ce dont j'avais besoin. Je peux faire une requête initiale pour obtenir le nombre d'affectations à l'avance. Sybase ne possède pas la fonction PIVOT ou TRANSFORM intégrée. Au lieu de cela, j'ai dû charger toutes mes données et ensuite écrire un objet C# pour lire dans les données, les transformer et les afficher dans le format que je voulais. Une table PIVOT aurait parfaitement fonctionné, si Sybase l'a soutenu. – Genzume