Trouver une ressource (Nouvelle version du moteur, plus rapide & pertinent, essayez le !)
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
|
CalendriCode
| | | L | M | M | J | V | S | D |
| | 1 | 2 | 3 | 4 | 5 | 6 |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 | | | |
|
Téléchargements
Logiciels à télécharger sur le même thème :
|