Formation Google AnalyticsSavez-vous bien utiliser les outils de mesure d'audience ?
Effectuez-vous un calcul de ROI (Retour sur investissement) pour savoir comment améliorer vos campagnes emarketing ?
Savez-vous utiliser les bons outils pour booster votre taux de transformation ?
La formation Web Analytics de Ranking Metrics, présentée par un expert reconnu officiellement par Google Analytics, vous apportera les réponses à toutes vos questions !
===> Informations et inscriptions.

Pb d'organisation d'une UNION de deux requetes SELECT en sql

Poster un nouveau sujet Imprimer cette discussion    Forum -> Développement d'un site Web   Les dernières discussions de ce forum sont disponibles au format RSS
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 
nickargall
WRInaute accro
WRInaute accro

Inscrit le: 13 Juin 2005
Messages: 3866
Localisation: Exilé au Groland à cause de Joe Dalton

URL permanente de ce messagePosté le : Ven Nov 23, 2007 17:55    Sujet du message: Pb d'organisation d'une UNION de deux requetes SELECT en sql

Bonsoir
Je vais essayer d'être clair ...

J'ai une requête:
Code:

SELECT DISTINCT(`id_rep`),`message`,`id_forum`,`id_message`,`sujet`,`date`,`heure`,`nom` FROM `messages` WHERE `id_rep`<>0 GROUP BY `id_rep` DESC

UNION

SELECT `id_rep`,`message`,`id_forum`,`id_message`,`sujet`,`date`,`heure`,`nom` FROM `messages` WHERE `id_rep`=0

ORDER BY `date` DESC, `heure` DESC

La seconde partie me donne ce que je veux. Par contre, pour le premier bloc, j'ai besoin de garder le select distinct et le group by pour n'avoir qu'un enregistrement ayant le même id_rep.
Mais j'ai également besoin que cet enregistrement unique soit le dernier inscrit dans ma base - cad faire un tri sur `date` DESC et `heure`DESC en même temps que le GROUP BY dans la premiere requete- mais c'est pas possible.
SI quelqu'un me trouve la formule magique, je louerai son nom jusqu'en 2008.
 
nickargall Visiter le site web du posteur
YoyoS
WRInaute accro
WRInaute accro

Inscrit le: 14 Sep 2006
Messages: 2379

URL permanente de ce messagePosté le : Ven Nov 23, 2007 18:25    Sujet du message: Pb d'organisation d'une UNION de deux requetes SELECT en sql

Hi,

J'ai pas trop compris tes explications même si tu as voulu être clair Very Happy Par contre, c'est peut-être la façon dont tu as commencé ta requête que je comprends pas trop. Puis le group by, je ne l'ai jamais vu en plein milieu d'un union comme ça !

Tu veux sélectionner quoi exactement ? Tu veux que ta requête te sorte un seul enregistrement ? Et si on pouvait avoir un extrait de la table message ! Very Happy
 
YoyoS Visiter le site web du posteur
nickargall
WRInaute accro
WRInaute accro

Inscrit le: 13 Juin 2005
Messages: 3866
Localisation: Exilé au Groland à cause de Joe Dalton

URL permanente de ce messagePosté le : Ven Nov 23, 2007 18:33    Sujet du message: Pb d'organisation d'une UNION de deux requetes SELECT en sql

Je le savais que j'étais pas clair ...

J'ai une table message
id_message | id_forum |sujet|message|nom|date|heure|id_rep|div

Deux cas de figure:
Des messages avec un id_rep=0 (qui sont des sujets de discussion)
Des messages avec un id_rep=variable (qui sont des réponses aux discussion dont l'id_message=$variable)

Ce que je veux :
Regrouper dans un même résultat :
tous les messages ayant un id_rep=0
et tous les messages ayant un id_rep=$variable DISTINCT

et trier le tout sur date et heure.. avec parfois des restrictions du genre div=1, id_forum=12, ou encore nom='durand' par exemple

Ma requete en haut marche presque, sauf que par exemple pour l'enregistrement correspondant à un id_rep=215, par exemple, il me sort pas forcément le dernier enregistrement. C'est ce que je veux avoir ... Confused

Edit : Le group by, si je le mets pas, c'est comme si le distinct marchait pas, il va me sortir tous les messages ayant le même id_rep
 
nickargall Visiter le site web du posteur
YoyoS
WRInaute accro
WRInaute accro

Inscrit le: 14 Sep 2006
Messages: 2379

URL permanente de ce messagePosté le : Ven Nov 23, 2007 18:53    Sujet du message: Pb d'organisation d'une UNION de deux requetes SELECT en sql

Donc tu veux sélectionner des discussions existantes dans ta bdd ? Et pour chaque discussion afficher son dernier message en gros ? Very Happy

Donc dans ta table message, tu as plein de id_rep identiques qui correspondent aux messages de la discussion id_message.

Et tu veux sélectionner: Toutes les discussions id_message = x et ses messages id_rep = x

Tu a déjà fait ça en requêtes séparées déjà ? C'est un peu bizarre quand même ton système ^^


Dernière édition par YoyoS le Ven Nov 23, 2007 19:09; édité 1 fois
 
YoyoS Visiter le site web du posteur
jcaron
WRInaute passionné
WRInaute passionné

Inscrit le: 13 Fév 2004
Messages: 521
Localisation: Paris

URL permanente de ce messagePosté le : Ven Nov 23, 2007 19:06    Sujet du message: Re: Pb d'organisation d'une UNION de deux requetes SELECT en

Je te propose (pour remplacer la première partie):
Code:
SELECT id_rep,message,id_forum,id_message,sujet,date,heure,nom FROM messages WHERE id_message IN (SELECT max(id_message) FROM messages WHERE id_rep<>0 GROUP BY id_rep)


Evidemment il faut une BDD qui gère les sub-selects... Et ça considère que les id_messages sont alloués de façon croissante. C'était bien le dernier message chaque discussion que tu voulais?

Jacques.
 
jcaron Visiter le site web du posteur
nickargall
WRInaute accro
WRInaute accro

Inscrit le: 13 Juin 2005
Messages: 3866
Localisation: Exilé au Groland à cause de Joe Dalton

URL permanente de ce messagePosté le : Ven Nov 23, 2007 23:36    Sujet du message: Pb d'organisation d'une UNION de deux requetes SELECT en sql

Bonsoir Jacques

En effet c'est bien le dernier message de chaque discussion que je voulais. Et en effet, les id_message sont alloués de façon croissante.

Mais là les résultats qui me sont renvoyés sont
- uniquement le dernier "message" enregistré sur la base (dont l' id_rep=2213) et non le dernier message de chaque discussion

- suivi de tous les "débuts de discussion" dont l' id_rep=0.


Code:

SELECT id_rep,message,id_forum,id_message,sujet,date,heure,nom FROM messages WHERE id_message IN (SELECT max(id_message) FROM messages WHERE id_rep<>0 ) AND `div`='1' GROUP BY `id_rep` UNION SELECT `id_rep`,`message`,`id_forum`,`id_message`,`sujet`,`date`,`heure`,`nom` FROM `messages` WHERE  `div`='1' AND `id_rep`=0
 
nickargall Visiter le site web du posteur
jcaron
WRInaute passionné
WRInaute passionné

Inscrit le: 13 Fév 2004
Messages: 521
Localisation: Paris

URL permanente de ce messagePosté le : Ven Nov 23, 2007 23:59    Sujet du message: Pb d'organisation d'une UNION de deux requetes SELECT en sql

nickargall a écrit:
Code:

SELECT id_rep,message,id_forum,id_message,sujet,date,heure,nom FROM messages WHERE id_message IN (SELECT max(id_message) FROM messages WHERE id_rep<>0 ) AND `div`='1' GROUP BY `id_rep` UNION SELECT `id_rep`,`message`,`id_forum`,`id_message`,`sujet`,`date`,`heure`,`nom` FROM `messages` WHERE  `div`='1' AND `id_rep`=0


Tu n'as pas mis les parenthèses au bon endroit, vérifie ce que je disais dans mon message. Le GROUP BY est dans le sub-select...

Jacques.
 
jcaron Visiter le site web du posteur
nickargall
WRInaute accro
WRInaute accro

Inscrit le: 13 Juin 2005
Messages: 3866
Localisation: Exilé au Groland à cause de Joe Dalton

URL permanente de ce messagePosté le : Sam Nov 24, 2007 0:10    Sujet du message: Pb d'organisation d'une UNION de deux requetes SELECT en sql

C'est sur, si je fais pas comme on me dit, ça risque pas de marcher Smile
Merci Jacques, c'est impeccable.
 
nickargall Visiter le site web du posteur
 
Montrer les messages depuis:   
Revenir en haut    Forum -> Développement d'un site Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1 - 
Connexion
Nom d'utilisateur:    Mot de passe:      Se connecter automatiquement à chaque visite    

CLIQUEZ ICI pour vous inscrire à WebRankInfo (forum, annuaire, outils...)

Connexion

© 2001-2005 phpBB Group, support français
Personnalisation : WebRankInfo ™


 ODP  Firefox  Alsacreations  annuaire webmaster Yagoort