begin process at 2008 07 06 07:12:55
1 205 472 membres
51 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : probleme de groupe by sql server [ SQL Server, MSDE, SQL Express / Requêtes ] (wally88)

probleme de groupe by sql server le 22/01/2008 16:20:49

wally88
Bonjour voila j'ai une galere avec Group by en sql de sql serveur

Avec sql serveur il faut apprement mettre tout les champs que l'on veux dans un certain sens pour qu'il groupe, or la avec ma requete il selectionne un peu tout dans toutes la base.

Ici ce sont des voitures et je lis un message par rapport a une annonce de voiture. Si la personne a 10 annonces quand elle envoie un message bah le message va s'ecrire 10 fois car il va pas grouper par rapport au mess_id mais par rapport a je sais pas quoi :s

C'est assez troubles mes explications, mais si quelqu'un peut m'aider car la j'en peu plus de ce pauvre select ... :'(


"select m.mess_id, m.mess_expid, m.mess_destid, m.mess_intitule, m.mess_message, m.mess_date, m.mess_lu, m.mess_annonce_dest, m.mess_annonce_exp, u.u_login, e.ech_marq_nom, e.ech_modele_nom, e.ech_version_nom, e.ech_image1 from messagerie m, utilisateur u, echange e, contre c , contreveh cv " +
"where mess_destid = '" + DestId + "' and u_id = mess_expid and ech_u_id = mess_expid and e.ech_u_id = u.u_id and c.con_ech_id = e.ech_id " +
"and cv.cveh_con_id = c.con_id and e.ech_etat='active' group by m.mess_id, m.mess_expid, m.mess_destid, m.mess_intitule, m.mess_message, m.mess_date, m.mess_lu, m.mess_annonce_dest, m.mess_annonce_exp, u.u_login, e.ech_marq_nom, e.ech_modele_nom, e.ech_version_nom, e.ech_image1"

Merci

Re : probleme de groupe by sql server le 22/01/2008 20:05:13

nhervagault
Salut

1 --> Utilises des inner join pour lier tes tables (plus lisible et plus performant)
2 --> C'est compliqué de résoudre ton probleme sans MCD ou modele relationnel

Si a partir d'un id de message tu es sur d'avoir 1 seul element dans toutes tes tables normalement tu ne dois pas avoir de problème.
Sinon il faut que tu selectionne un element par exemple avec MAX(u.login)

Il faut etre sur que ton m est 1 utilisateur 1 echange

Je pense que c'est 1 message = n echange --> mais un having max(echange.id) par exemple.ca peut resoudre ton probleme

Bon courage.

Re : probleme de groupe by sql server le 22/01/2008 20:26:21

wally88
Apparemnt tu as bien cerné mon probleme, je pensais pas que se serait possible. ;)

having max() me marque :

Expression de type non booléen spécifiée dans un contexte où une condition est attendue, près de ')'

Desolé le SQL jsuis pas terrible terrible la dedans a pars select update delette .... :D

pour les inner join j'ai essayer mais  sa ne fonctionne pas mes tables sont pas terribles terribles, il me met "l'identificateur je sais plus trop quoi ne peut pas etre lié"


Merci


Re : probleme de groupe by sql server le 22/01/2008 21:25:46

nhervagault
OK

Soit tu utilises un having max(echange.id)  > unevaleur
J'avais repondu rapidement

Tu enleves les e.* dans ton groupby
et tu transformes les e.* en max(e.*) dans le select

Ce qui donnera

max(e.ech_marq_nom), max(e.ech_modele_nom), max(e.ech_version_nom), max(e.ech_image1)

Cette fois si c'est peut-etre la solution.


Re : probleme de groupe by sql server le 22/01/2008 22:49:34

wally88

Impossible de trouver un champ ou une propriété 'ech_marq_nom' dans la source de données sélectionnée

en mettant : max(e.ech_marq_nom), max(e.ech_modele_nom), max(e.ech_version_nom), max(e.ech_image1)
j'ai essayer de rajouter a la suite en enlevant les max mais il recommence a m'en mettre plein :s

Re : probleme de groupe by sql server le 22/01/2008 23:35:38

nhervagault
Voila une requete qui ressemble a ce que tu devrais avoir

select m.mess_id, m.mess_expid, m.mess_destid, m.mess_intitule, m.mess_message, m.mess_date, m.mess_lu, m.mess_annonce_dest, m.mess_annonce_exp, u.u_login, max(e.ech_marq_nom), max(e.ech_modele_nom), max(e.ech_version_nom), max(e.ech_image1)
 from messagerie m, utilisateur u, echange e, contre c , contreveh cv
where mess_destid = '" + DestId + "' and u_id = mess_expid and ech_u_id = mess_expid and e.ech_u_id = u.u_id and c.con_ech_id = e.ech_id
and cv.cveh_con_id = c.con_id and e.ech_etat='active' group by m.mess_id, m.mess_expid, m.mess_destid, m.mess_intitule, m.mess_message, m.mess_date, m.mess_lu, m.mess_annonce_dest, m.mess_annonce_exp, u.u_login

Re : probleme de groupe by sql server le 23/01/2008 00:01:38

wally88
Oui c'est bien ce que j'avais suite a tes conseils, mais nan ca veux pas :
galere galere :s

Impossible de trouver un champ ou une propriété 'ech_marq_nom' dans la source de données sélectionnée


Re : probleme de groupe by sql server le 23/01/2008 08:43:21

nhervagault
C'est que la colonne est mal nommée et elle n'existe pas ta table echange
Il y a pas d'autres raison de ce message.

Re : probleme de groupe by sql server le 23/01/2008 10:36:33

wally88
Malheureusement elle est bien nommé car si j'enleve les max qui je laisse les e.ech... il m'affiche bien ce qui est dans la base de donnée.

J'ai vraiment du mal a comprendre :s


Classé sous : sql, and, id, mess, ech

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS