|
Pb sur jointures multiples avec fichiers Mysql |
Iniciado por rodolphe, fev., 08 2005 8:06 PM - 8 respostas |
| |
| | | |
|
| |
Publicado em fevereiro, 08 2005 - 8:06 PM |
Bonjour J'ai une requete que je cree en tant que requete dans windev, pour pouvoir remplir une table. Cette requete comporte plusieurs jointures, problème recurrent avec windev.
Voila ma requete :
select reportage.reportage_id, reportage.titre, count(chapitre.chapitre_id) AS nb_chapitres, sum(chapitre.espace_disque) as taille, sum(chapitre.nb_photos) as nb_photos, reportage.visites, count(commande.commande_id) as nb_commandes, sum(commande.total) as chiffre_affaire from reportage left join chapitre on chapitre.reportage_id = reportage.reportage_id left join commande on commande.reportage_id = reportage.reportage_id group by reportage.reportage_id
Evidemment Windev me dit que la requete n'est pas valide car la syntaxe de la jointure ne lui plait pas. J'ai bien sur tenté de remettre le nom de la table devant mon left join. Windev valide cette syntaxe, mais pas Mysql, sur lequel est executé la requete !!!!
Y at-il une syntaxe universelle qui passerait sous les 2 ???
Je suis plutôt coincé...
merci |
| |
| |
| | | |
|
| | |
| |
Publicado em fevereiro, 08 2005 - 11:02 PM |
Rodolphe a formulé la demande :
Bonjour J'ai une requete que je cree en tant que requete dans windev, pour pouvoir remplir une table. Cette requete comporte plusieurs jointures, problème recurrent avec windev.
Voila ma requete :
select reportage.reportage_id, reportage.titre, count(chapitre.chapitre_id) AS nb_chapitres, sum(chapitre.espace_disque) as taille, sum(chapitre.nb_photos) as nb_photos, reportage.visites, count(commande.commande_id) as nb_commandes, sum(commande.total) as chiffre_affaire from reportage left join chapitre on chapitre.reportage_id = reportage.reportage_id left join commande on commande.reportage_id = reportage.reportage_id group by reportage.reportage_id
Evidemment Windev me dit que la requete n'est pas valide car la syntaxe de la jointure ne lui plait pas. J'ai bien sur tenté de remettre le nom de la table devant mon left join. Windev valide cette syntaxe, mais pas Mysql, sur lequel est executé la requete !!!!
Y at-il une syntaxe universelle qui passerait sous les 2 ???
Je suis plutôt coincé...
merci
Le problème ne proviendrait pas plus du group by qui ne comporte les champs reportage.titre et reportage.visites
-- A+
PhL |
| |
| |
| | | |
|
| | |
| |
Publicado em fevereiro, 09 2005 - 12:51 AM |
> Rodolphe a formulé la demande :
select reportage.reportage_id, reportage.titre, count(chapitre.chapitre_id) AS nb_chapitres, sum(chapitre.espace_disque) as taille, sum(chapitre.nb_photos) as nb_photos, reportage.visites, count(commande.commande_id) as nb_commandes, sum(commande.total) as chiffre_affaire from reportage left join chapitre on chapitre.reportage_id = reportage.reportage_id left join commande on commande.reportage_id = reportage.reportage_id group by reportage.reportage_id
Je vois un problème dans cette requête ... - La clause "group by" doit reprendre toutes les colonnes de la requête qui ne sont pas des fonctions de groupe, donc il manque reportage.titre et reportage.visites.
Il faut comprendre que dans une requête SQL, qui utilise la clause group by, il va y avoir une rupture sur chaque colonne du résultat qui n'est pas une fonction de groupe (sommation, nombre, moyenne...). Donc la logique voudrait que tu mettes en premier les colonnes "simples" (sans fonction de groupe), puis les fonctions de groupe. Et dans le group by, tu dois reprendre TOUTES les colonnes simples. Tu peux ensuite ajouter une clause order by à la fin, sinon par défaut le tri est fait sur chaque colonne simple dans l'ordre d'apparition.
A mon avis, je dirais donc que la colonne reportages.visites n'est pas à sa place (il faut la mettre après reportage.titre), et qu'il faut mettre 3 colonnes dans le group by, les 3 premières (simples).
-- Jean-Michel CAMBOT metsdumanche chez baliciel.com Baliciel HomePage : http://www.baliciel.com/ |
| |
| |
| | | |
|
| | |
| |
Publicado em fevereiro, 09 2005 - 10:01 AM |
Pardon je me suis surement mal expliqué. Cette requete est correcte, et me donne les bons résultats sous mysql !!! En fait je l'ai un peu allégé dans mon mail pour montrer rapidement ce qu'elle contient.
Mais le problème est plus sournois : cette requete est correctement executée sous mysql (d'ailleurs merci pour les precisions sur le group by, je vais regarder). D'ailleurs si je la cree en tant que nouvelle requete dans windev et que je l'execute avec "tester la requete", windev sait me retourner les enregistrements. Mais windev ne reconnait pas la syntaxe de cette requete à cause des left join en cascade !!!!!
Ce qui veut dire que ma requete n'est pas considérée comme syntaxiquement valide par windev, et que je ne peux donc pas attacher le resultat de cette requete à une table et ses colonnes !!!! car tant que la syntaxe de la requete n'est pas valide pour windev, les champs récupérés dans le select ne sont pas reconnus par l'éditeur !!!
Voilà le fond de mon problème, je cale... |
| |
| |
| | | |
|
| | |
| |
Publicado em fevereiro, 09 2005 - 10:27 AM |
> Mais windev ne reconnait pas la syntaxe de cette requete à cause des left join en cascade !!!!!
Ce qui veut dire que ma requete n'est pas considérée comme syntaxiquement valide par windev, et que je ne peux donc pas attacher le resultat de cette requete à une table et ses colonnes !!!! > car tant que la syntaxe de la requete n'est pas valide pour windev, les champs récupérés dans le select ne sont pas reconnus par l'éditeur !!!
Pour info, j'ai aussi les mêmes problèmes ! Et pas de solution non plus ! Suis donc aussi preneur de vos idées. |
| |
| |
| | | |
|
| | |
| |
Publicado em fevereiro, 09 2005 - 10:40 AM |
As-tu essayé HexecuterequeteSQL avec le paramètre hRequêteSansCorrection ? |
| |
| |
| | | |
|
| | |
| |
Publicado em fevereiro, 09 2005 - 11:14 AM |
As-tu essayé HexecuterequeteSQL avec le paramètre hRequêteSansCorrection ?
Oui, bien sur. Mais dans ce cas, impossible de gérer les paramètres null. C'est un problème que j'ai soumis au ST sans solution actuellement. |
| |
| |
| | | |
|
| | |
| |
Publicado em julho, 30 2005 - 9:28 PM |
J'ai exactement le même problème si vous avez trouvé la solution... |
| |
| |
| | | |
|
| | |
| |
Publicado em julho, 30 2005 - 10:02 PM |
Pour ton paramètre null essaye = "" |
| |
| |
| | | |
|
| | | | |
| | |
|