|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 46 ![]() |
Bonjour,
J'ai quelques soucis la clause GROUP BY dans ma requête sous MySQL. En effet cette dernière semble occulter certains enregistrements ou alors j'ai compris un truc de travers. Mon but est donc de grouper tous mes titres et d'avoir le premier sous titre correspondant. Voici ma requête sans GROUP BY : Code :
![]() Maintenant avec un GROUP BY : Code :
![]() Vous notez donc que dans le cas des articles ayant plusieurs sous titres, les premiers sous titres n'apparaissent pas. L'article des 750 ans de Pont à mousson par exemple : avec un GROUP BY il devrait avoir comme sous titre "Les actes fondateurs [...]" et non "Sons et lumières". De plus le mois de la date devrait être 05 etc... La requête n'est pas censé prendre le premier enregistrement pour compléter les autres colonnes après un GROUP BY ? Si vous pouviez m'éclairer sur mon problème, merci. |
||||
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Responsable de service informatique Inscription : janvier 2009 Messages : 1 085 ![]() |
Bonjour,
Dans la norme SQL, toutes les colonnes renvoyées qui ne font pas l'objet d'une fonction d'aggrégation doivent être dans la clause GROUP-BY, ce qui n'est pas le cas dans ta requête. Comment le moteur de la base sait-il quelle valeur garder pour les colonnes article_id, a.texte, ss_titre, lieu_id,d.date1, d.date2 ? Tatayo. |
|
|
00
|
|
|
#3 |
|
Membre émérite
![]() Olivier DehorterIngenieur de recherche - Ecologue Inscription : juin 2003 Messages : 697 ![]() |
Il faudrait déjà utiliser la notation des jonctions qui suivent la norme actuelle (en fait depuis 1992 de mémoire).
c'est à dire INNER JOIN .... ensuite il faudrait regarder dans les tutoriels les regroupements là vous confondez avec le DISTINCT |
|
|
00
|
|
|
#4 | |
![]() ![]() Alain Ingénieur d'études décisionnel Inscription : mai 2002 Messages : 4 445 ![]() |
Citation:
De quelle table les colonnes article_id, ss_titre et lieu_id proviennent-elles ?
__________________
Modérateur Langage SQL N'oubliez pas le bouton et pensez aux balises [code]Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur ![]() |
|
|
|
00
|
|
|
#5 | |||||
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 46 ![]() |
Citation:
Désolé j'ai zappé des alias : Code :
Citation:
C'est ce que je me suis dit au début mais Distinct n'a absolument aucun impact sur la requête. Citation:
|
|||||
|
|
00
|
|
|
#6 | ||
|
Membre habitué
![]() Gaëtan Développeur Oracle Inscription : mai 2006 Messages : 117 ![]() |
Bonjour,
D'après ce que je comprend pour votre cas , après l'utilisation du group by vous voulez avoir la ligne ' Les 750...' en titre et ' Les actes fondateur ... ' en sous titre. Je ne pense pas que le group by soit la solution. Je pense qu'il faudrait faire un truc comme ça Code :
En claire ça va prendre le titre/sous titre ayant la date1 la plus petite. Si cela ne te va pas dans les sous titre alors il faudrait peut être numéroté des Ss titre |
||
|
|
00
|
|
|
#7 | ||
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 46 ![]() |
A vrai dire cela fait exactement ce que je voulais, merci
Code :
|
||
|
|
00
|
|
|
#8 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Tu peux déjà remplacer tous les OR par un IN :
Code :
Code :
WHERE a.edition IN ('NANCY', 'NANCY-METZ', 'NANCY-METZ-STRASB', 'NANCY-METZ-STR-DIJON', 'TTES EDITIONS')
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
||
|
|
10
|
|
|
#9 | ||
|
Membre habitué
![]() Gaëtan Développeur Oracle Inscription : mai 2006 Messages : 117 ![]() |
Sinon, une autre solution, si tu as la possibilité, c'est d'ajouter une colonne dans la table ARTICLES, genre is_master, avec un flag Y/N. Cette colonne correspondra à la premier page que tu veux.
Au final ta requête donne : Code :
|
||
|
|
01
|
|
|
#10 |
|
Futur Membre du Club
![]() Étudiant Inscription : janvier 2008 Messages : 46 ![]() |
Malheureusement j'ai pas le droit
Bref, merci pour votre aide. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com