Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1168 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Aggregate Function missing?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL] Aggregate Function missing?

n°801852
esox_ch
Posté le 21-07-2004 à 14:11:17  profilanswer
 

Bonjour,
 
J'ai un petit problème de sql, j'ai trouver sur ce site  :sarcastic: :  
 
http://www.w3schools.com/sql/sql_functions.asp
 
La fonction "LAST()" , mais quand je cherche à l'utiliser, MYSQL ne la detecte pas comme une commande et donc genère une erreur, je suis aller me renseigner sur ce site :  
 
http://dev.mysql.com/doc/mysql/en/ [...] tions.html
 
Mais il n'y a pas de trace de cette fonction ....  :ouch:  :heink:  :(  
 
QQn peut me renseigner svp? :??:  
 
Merci d'avance :jap:  
 
Esox

mood
Publicité
Posté le 21-07-2004 à 14:11:17  profilanswer
 

n°802229
esox_ch
Posté le 21-07-2004 à 17:42:28  profilanswer
 

up

n°802234
jagstang
Pa Capona ಠ_ಠ
Posté le 21-07-2004 à 17:44:06  profilanswer
 

donne ta requête stp.
 
si tu utilise une fonction d'aggération, (count, sum, ...) tu dois faire un GROUP BY  


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°802238
esox_ch
Posté le 21-07-2004 à 17:46:32  profilanswer
 

Donc la requette est (dsl si c un peu caotique) :  
 

Code :
  1. SELECT nom,description,groupe,COUNT(sujets.id) AS countid,LAST(reponse.auteur) AS lastauteur,LAST(reponse.cree) AS lastcree FROM forums,permissions,reponses,sujets GROUP BY forum.id HAVING forums.id != '0' && forums.id = permissions.id_forum && sujets.forum_id = forum.id && reponses.id_sujet = sujets.id && permissions.login = 'Esox'


 
Et mysql me repond :
 
#1064 - Erreur de syntaxe près de '( reponse.auteur ) AS lastauteur, LAST( reponse.cree ) AS lastcr' à la ligne 1
 
 
Merci d'avance

n°802248
jagstang
Pa Capona ಠ_ಠ
Posté le 21-07-2004 à 17:55:14  profilanswer
 

bon à froid comme ça :
 
SELECT nom,description,groupe,COUNT(sujets.id) AS countid,LAST(reponse.auteur) AS lastauteur,LAST(reponse.cree) AS lastcree  
FROM forums,permissions,reponses,sujets
 
GROUP BY nom,description,groupe
WHERE forums.id != '0'  
AND forums.id = permissions.id_forum  
AND sujets.forum_id = forum.id  
AND reponses.id_sujet = sujets.id  
AND permissions.login = 'Esox'
 
 
remarque : having est l'équivalent de WHERE mais pour les fonction d'aggrégation (HAVING SUM(id) > 10)
 
utilise AND plutôt que &&


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°802255
esox_ch
Posté le 21-07-2004 à 17:57:20  profilanswer
 

L'erreur reste la meme :(

n°802257
jagstang
Pa Capona ಠ_ಠ
Posté le 21-07-2004 à 17:58:48  profilanswer
 

as 'countID'
 
rajoute les ' partout


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°802264
esox_ch
Posté le 21-07-2004 à 18:02:00  profilanswer
 

J'avais penssé a ca, mais sur le site de w3school ils mettent pas les ', et d'ailleur si je les met l'erreur reste pareille

n°802269
jagstang
Pa Capona ಠ_ಠ
Posté le 21-07-2004 à 18:04:36  profilanswer
 

ben en fait en MySQL la fonction LAST() n'existe pas.
 
le problème vient de là. essaie MAX()


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°802271
esox_ch
Posté le 21-07-2004 à 18:05:36  profilanswer
 

Ui mais avec max je vois mal comment faire ... zut ... et pkoi dans le site de w3c ils disent que ca existe?

mood
Publicité
Posté le 21-07-2004 à 18:05:36  profilanswer
 

n°802280
jagstang
Pa Capona ಠ_ಠ
Posté le 21-07-2004 à 18:18:53  profilanswer
 

il existe plusieurs SGBD, plusieurs version du langage SQL, etc... [:spamafote]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°802282
esox_ch
Posté le 21-07-2004 à 18:20:11  profilanswer
 

Ok ... je m'etais dit que vu qu'ils avaient deja fait la distinction entre MS et SQL, alors tt les sgbd basé sql admettaient cette fonction ...

n°802755
esox_ch
Posté le 22-07-2004 à 09:19:28  profilanswer
 

Est-ce que qqn aurait une idée de comment je peux faire pour obtenir le meme resultat avec Max()? Parceque je vois pas trop... La requette en gros doit faire ça :
 
Ma table contient une colonne index et une colonne données,et une colonne données2, les colonnes données et données2 peuvent contenir plusieurs fois chaque donnée. J'aimerais que la requete m'indique la valeur de la derniere recurence de donnée quand donnée2 a une valeur précise.
Tout en sachant que les données ne sont pas classées par ordre alphabetique dans la table.
En gros ca serais qqch du genre :
 
SELECT donnée FROM matable WHERE id = MAX('id') AND donnée2 = 'madonnée'
 
Qqn vois comment on peut transformer cette requette pour qu'elle soit possible?
Merci

n°802773
karamilo
Posté le 22-07-2004 à 09:46:35  profilanswer
 

une petite feinte :
 
SELECT donnée FROM matable WHERE donnée2='madonnée' ORDER BY id DESC LIMIT 1

n°802777
esox_ch
Posté le 22-07-2004 à 09:48:19  profilanswer
 

J'y ai penssé aussi mais si plusieurs associations donnée => donnée2 existent ca marchera pas... et dans mon cas c'est justement ce qui se passe


Message édité par esox_ch le 22-07-2004 à 09:48:31
n°802780
jagstang
Pa Capona ಠ_ಠ
Posté le 22-07-2004 à 09:53:04  profilanswer
 

tu moment que tu utilise une fonction d'agégation (max) tu dois utiliser group by si tu as d'autres champs.  
 
en faisant ceci, tu ne peux que perdre les infos multiple de donnée => donnée2
 
je crois que tu as mal modélisé ton truc. ou alors fais plusieurs requète (c'est mieux 2 requètes qu'une requète pourrie)


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°802781
karamilo
Posté le 22-07-2004 à 09:53:31  profilanswer
 

J'ai pas trop compris la, tu peux donner un exemple ? :)

n°802787
esox_ch
Posté le 22-07-2004 à 09:57:29  profilanswer
 

Donc c impossible de transformer ma requette initiale (celle en haut du topic) de la sorte qu'elle n'utilise pas LAST() ? Soit faut que je fasse plusieurs requettes soit que je change mes tables?

n°802798
jagstang
Pa Capona ಠ_ಠ
Posté le 22-07-2004 à 10:08:03  profilanswer
 

si tu demande le LAST, MAX, ou autre, la requête ne va retourner qu'un seule ligne par champ non groupé. imaginons
 
j'ai un table client. ces clients peuvent habiter à n localités (j'ai donc une table habiter, et une table localite) 3 tables.
 
si j'ai 3 adresses, et que je demande LAST, MAX, SUM ou autre, je n'aurais plus qu'une ligne par user, et non pas 3
 
bref. le fonctions d'aggrégation peuvent t'aider, mais tu ne peux pas les utiliser à tout va


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°802807
esox_ch
Posté le 22-07-2004 à 10:13:17  profilanswer
 

Oui ca je l'avais compris ;) .C'est p-e moi qui me suis mal exprimé auparavant.
 
Mais pour ce que je veux faire, ma requete serait parfaite s'il y avais pas ce LAST() a convertir en autre chose ...  et la est tout le probleme .. j'arrive pas du tout a m'imaginer par quoi je peux remplacer ce LAST() tout en ne mettant pas de LIMIT = 1 etant donné que ce select pourra retourner plusieurs données (vu que forum.id n'est pas unique)

n°802876
jagstang
Pa Capona ಠ_ಠ
Posté le 22-07-2004 à 11:11:44  profilanswer
 

ben LAST çA existe pas il faudras faire avec hein [:spamafote]


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
n°802910
esox_ch
Posté le 22-07-2004 à 11:31:00  profilanswer
 

ui je c :( , par hazard tu vois comment je pourrais tourner ma requette ?

n°802926
jagstang
Pa Capona ಠ_ಠ
Posté le 22-07-2004 à 11:38:12  profilanswer
 

tu regard par rapport au champs date, ou à l'id au pire.  
 
sinon, on dit occurence, pas récurrence


---------------
What if I were smiling and running into your arms? Would you see then what I see now?  
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL] Aggregate Function missing?

 

Sujets relatifs
requete SQL select like dans un CLOBProbleme langage SQL sous sql serveur
stockage de fonctions entre 2 serveurs de données sous SQL server[SQL]Tri naturel sous PostGre
Probleme avec variable/sql et cache opera[SQL] cmt supprimer/modifier un enregistrement d'un table ?
Requete Update avec jointure sous SQL SERVEURRecherche dans une base sql ?
SQL en Delphi[SQL SERVER] Comparaison de table [Presque resolu]
Plus de sujets relatifs à : [SQL] Aggregate Function missing?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR