Select en colonne et non en ligne...

Résolu
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 - 19 juil. 2005 à 01:26
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 - 20 juil. 2005 à 10:25
Salut,







j'ai deux tables une contenant disons,
des personnes et une autre contenant des cours





voici la structure pour l'exemple :



[ Personnes ]




<li>idPer (clé)


</li><li>nom


</li><li>etc


</li>



[ Cours ]




<li>lib


</li><li>date


</li><li>idPer


</li>






exemple de remplissage






[ Personnes ]

1 Dupont ...

2 Durand ...

3 David ...







[ Cours ]











math 01/01/2005 1

math 01/01/2005 3

math 02/01/2005 2

math 03/01/2005 1

angl 02/01/2005 1

angl 03/01/2005 2

Geo 04/01/2005 1

Geo 04/01/2005 2

Geo 04/01/2005 3




je voudrais en une seule requête
sql afficher toutes les libs des cours en colone puis le nom de la
personne.

Et pour chaque personne, dans la colone associée au cours,
marquer le nb de participation cad





Math angl Geo Nom







2 1 1 Dupont

1 1 1 Durand

1 0 1 David



-------------------->



Y





J'ai une solution par le code avec deux
requêtes :




<li>
une pour lister les different
cours + ajouter le libeller « Nom »


</li><li>
une pour compter le nb de presence
de la personne X au cours Y



</li>





mais j'ai besoin d'utiliser une seule
requete SQL... d'instinct je ne pense pas que se soit possible mais
si quelqu'un a une méthode, ça le ferait bien !







Nb: ce n'est pas la structure de ma base, c'est juste histoire que ma demande soit plus facile à comprendre....





++




Zlub

10 réponses

Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
19 juil. 2005 à 23:41
salut,





bon j'ai du mieux ... ça marche sous acess mais j'ai besoin de le faire tourner depuis VB avec ADO...

voici ma requete sous acess



TRANSFORM count(cours.lib) as nb

SELECT personnes.nom

FROM cours INNER JOIN personnes ON cours.idPer = personnes.idPer

GROUP BY personnes.nom

PIVOT cours.lib



quelqu'un a une idée ?



++



Zlub
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
19 juil. 2005 à 11:30
Salut



je pense que tu travailles avec ACCESS



regardes les fonction de pivot dans access



http://www.microsoft.com/downloads/details.aspx?FamilyId=AB5AFF5B-A8BA-4C2B-BAB7-EEA1F953C040&displaylang=en

Comme exemple.

Mais je ne les ai pas etudiées
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
19 juil. 2005 à 14:42
Salut,








Oui pardon, j'ai omis de dire que c'est pour une base Access
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
19 juil. 2005 à 23:56
Salut



Tu peux directement appellé la requete depuis VB.

C'est le commandtype 'procedure stockée' que tu mets

et en name le nom de la requetee

Et les parametres te permettes de remplir les variables indefinis.

(Les fenetres qui s'ouvrent si on a une colonne incorrecte)



C'est magique ACCESS ;-)

C'est enfantin, mais il faut y penser (je l'ai pas vu beaucoup utiliser cette technique)

Du moins, j'ai pas vu vues beaucoup de sites ou articles présentant cette astuce.





Esperant que ca fonctionne.



Apres tu pourras faire un source sur l'utilisation des PIVOT dans access, car je ne pense pas que c'est présent.

C'est un truc que j'ai decouvert la semaine derniere.

Et qui vient d'etre mis dans SQL 2005.



Access a des fonctions plus puissantes que SQL ?? c'est bizarre.



La base microsoft lien est bourrée de petit truc. Mais j'ai pas eu le temps de la regarder.

Je l'ai trouvé par hasard pour une question du forum. (sur le numeratage des lignes le ranking)





Voila
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
20 juil. 2005 à 00:44
Salut



vi je sais que je peux stocker dans Access et l'appeler depuis VB mais
je ne peux pas utiliser cette solution ... Je m'explique, le script SQL
est dans un textBox et je souhaite que l'utilisateur puisse modifier la
requete comme il le veut, puis l'executer.... donc il me faut une
requête SQL qui passe en ADO...



thx pour ton idée...




++

Zlub
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
20 juil. 2005 à 06:56
Je ne comprends pas trop ce que tu veux.



Ta requete peut etre créer dynamiquement.

Regardes du coté de ADOX




Ensuite, utiliser le code suivant :






Sub CreerRequete(Nom As String, SQL As String)
Dim MaCom As New ADODB.Command
Dim MCat As New ADOX.Catalog
Set MCat.ActiveConnection = CurrentProject.Connection
MaCom.CommandText = SQL

MCat.Procedures.Append Nom, MaCom
Set MCat =Nothing
Set MaCom=Nothing
End Sub



Exemple d'utilisation :





CreerRequete "test", "select * from matable"




Il faut faire une reference A


Microsot ADO Ext 2.X for dll and security

X =5,6,7 ou 8

Microsof ActiveX Data Object 2.X Library


Voila
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
20 juil. 2005 à 06:59
Merci pour ton aide, mais je ne peux pas utiliser autre chose que ADO ...

++

Zlub
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
20 juil. 2005 à 07:01
C'est du ADO, c'est une extension de ADO fournit pas microsoft.
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
20 juil. 2005 à 07:01
sql = "..."
cnx.execute sql
et c'est tout ... c'est bien pour ça que je cherche une solution SQL qui passe bien en ADO ...

++

Zlub
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
20 juil. 2005 à 10:25
en fait le TRANSFORM
passe bien depuis ADO ... en fait c'est parceque j'avais installé
access 97 temporairement et je pense que c'est lui qui bloquait...




++

Zlub
0
Rejoignez-nous