CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

probleme SQL

m-2
m-2
Niveau 10
18 avril 2006 à 23:50:10

SELECT no_eleve, prenom, nom_eleve, nom_ecole, niveau, ville
FROM eleve LEFT JOIN ecole ON eleve.no_ecole = ecole.no_ecole
GROUP BY nom_ecole, niveau, ville
ORDER BY nom_eleve, prenom;

quand je veux voir ce que ca donne, access me dit

"vous avez esseyé d´exécuter uen requête ne comprenant pas la fonction ´no_eleve´ comme une partie de la fonction d´agrégat"

ca veut dire quoi ca au juste bordel??? quand j´enleve le GROUP BY, plus de probleme, la requete s´exécute parfaitement... mais dans mon travail, y faut les regrouper alors que faire OSTI?!!

danydane
danydane
Niveau 7
19 avril 2006 à 14:59:22

Premiere erreur : il ne peut y avoir plus attribut dans le SELECT que dans le GROUP BY, mais l´inverse est possible.

danydane
danydane
Niveau 7
19 avril 2006 à 15:01:20

Essaye :
GROUP BY no_eleve, prenom, nom_eleve, nom_ecole, niveau, ville

Mais je trouve quand même t´as requette un peu bizzare, il y a un GROUP BY alors qu´il n´y a pas de calcul dans le select, le probleme peut aussi venir de la.

godrik
godrik
Niveau 30
19 avril 2006 à 15:42:15

danydane, si il peut y en avoir plus, bien sur...

Le principe de group by est de "compresser" les n-uplets par paquet ayant la meme caracteristique (ici nomecole, niveua, ville) tu ne peux donc recuperer qu´un attribut qui a un sens pour ces paquets. eventuellement, les nomecole, niveau et ville puisqu´ils sont unique par paquet ou encore faire une opération arithmetique par paquet, comme Min(note_math) ou je ne sais quoi.

Quand tu dis qu´il faut les regroupper, tu veux dire que tu veux que les n-uplets ayant les meme champs nom_ecole, niveau et ville aparraisse a la suite ? Si ´est bien ca que tu veux, c´est ce que veux dire ´order by´

danydane
danydane
Niveau 7
19 avril 2006 à 18:49:49

Non ça marchera pas, d´ou le message d´erreur : "vous avez esseyé d´exécuter uen requête ne comprenant pas la fonction ´no_eleve´ comme une partie de la fonction d´agrégat"

Le group by doit contenir au minimum tous les attributs du Select.

Or dans son cas (GROUP BY nom_ecole, niveau, ville) il ignore les attibuts "no_eleve, prenom, nom_eleve" qui sont presents dans le select.

et il me semble que le order by servait à ranger les lignes par ordre alphabétique et non de voir appraitre les champs dans un ordre spécifique.

godrik
godrik
Niveau 30
20 avril 2006 à 14:01:58

select avg(paye) from employe group by poste;
paye n´apparait pas dans le roup by, mais on peut s´en servir quand meme. Mai que par une fonction qui marche par paquet. paye tout seul n´a bien evidement pas sens puisqu´il n´est pas unique...

"et il me semble que le order by servait à ranger les lignes par ordre alphabétique et non de voir appraitre les champs dans un ordre spécifique."
oui c´est ca
select coin from toto order by (a, b);
ca trie les tuples par a croissant, en cas de collisions par b croissant.

danydane
danydane
Niveau 7
20 avril 2006 à 18:37:40

"select avg(paye) from employe group by poste;
paye n´apparait pas dans le roup by, mais on peut s´en servir quand meme. Mai que par une fonction qui marche par paquet. paye tout seul n´a bien evidement pas sens puisqu´il n´est pas unique... "

:d) Oui justement dans ce cas la ça marchera, je n´est pas dit le contarire, je disait simplement qu´il ne peut pas y avoir plus d´attibuts dans le select (hormis les operations fesant l´objet du regroupement, comme la moyenne dans ton exmple) que dans le Group by.

exmple :
select avg(paye), numPoste, poste from employe group by poste

message d´erreur : "vous avez esseyé d´exécuter uen requête ne comprenant pas la fonction ´numposte´ comme une partie de la fonction d´agrégat.

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment