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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [SQL]J'arrive pas à trouver ma requête!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[SQL]J'arrive pas à trouver ma requête!

n°619151
ant-103
Posté le 22-01-2004 à 16:28:42  profilanswer
 

Bon alors voilà, j'ai une table qui contient l'id de l'utilisateur, la date de l'insertion de la ligne, le message entré dans la base de données et je cherche désepérement la requête qui m'affichera le dernier message sauvegardé de tout les id utilisateurs ( une par id ).... mais je trouve pas.... ça me déprime ça m'est pas encor arrivé et là c le coup dur :( suis sûr que c rien à faire mais là je bloque. help ;)

mood
Publicité
Posté le 22-01-2004 à 16:28:42  profilanswer
 

n°619157
art_dupond
je suis neuneu... oui oui !!
Posté le 22-01-2004 à 16:32:28  profilanswer
 

peut etre quelque chose comme ca
 
SELECT  max(date) FROM users GROUP BY user_id


---------------
oui oui
n°619173
ant-103
Posté le 22-01-2004 à 16:41:45  profilanswer
 

Effectivement là ça m'affiche la date max pour chaque utilisateur mais ce que je veux moi c pas la date mais le message ;) et j'y arrive po, merci quand meêm

n°619179
art_dupond
je suis neuneu... oui oui !!
Posté le 22-01-2004 à 16:45:05  profilanswer
 

SELECT message, max(date) FROM table GROUP BY user_id ???


---------------
oui oui
n°619182
ant-103
Posté le 22-01-2004 à 16:46:15  profilanswer
 

Bah non... il me file max date correctement mais le message c le premier qu'il trouve. normal d'ailleurs quand on y pense

n°619183
deliriumtr​emens
sic transit intestinal...
Posté le 22-01-2004 à 16:46:24  profilanswer
 

A tenter
 
SELECT * FROM table HAVING MAX(date) GROUP BY id

n°619189
ant-103
Posté le 22-01-2004 à 16:50:32  profilanswer
 

g déjà essayé mais il faut une condition à HAVING genre HAVING MAX(date) > 0 mais bon là c pas le bon truc

n°619195
mrbebert
Posté le 22-01-2004 à 16:52:56  profilanswer
 

C'est un problème connu [:proy]  
 
Il existe un "truc" mais bon, ca vaut ce que ca vaut (les puristes vont m'écharper mais tant pis :D ) :
 
SELECT user_id, max(concat(date, message))
FROM table
GROUP BY user_id

n°619205
ant-103
Posté le 22-01-2004 à 16:56:03  profilanswer
 

LOL! ça marche!!! merci !!!
m'en fou des principes... si ya pas d'autres solutions je prend!

n°619215
MagicBuzz
Posté le 22-01-2004 à 17:04:23  profilanswer
 

mrbebert > tu peux choisir ta mort : ecrasé sous un serveur, ou pendu à un câble réseau ? :D
 
ton truc marche, mais t'as pas intérêt à avoir trop de lignes dans la base hein ? ;)

mood
Publicité
Posté le 22-01-2004 à 17:04:23  profilanswer
 

n°619217
art_dupond
je suis neuneu... oui oui !!
Posté le 22-01-2004 à 17:05:40  profilanswer
 

on pourrait faire comment sinon ?  
 
une table intermédiaire ? ce serait lourd aussi ?


---------------
oui oui
n°619218
MagicBuzz
Posté le 22-01-2004 à 17:06:15  profilanswer
 

Un truc un peu plus propre (au moins la concaténation porte pas sur un gros volume de données ;))
 
Mais il faut que le SGBD supporte les requêtes imbriquées.
 


select datmod, utimod, lib1
from tbl
where datmod || utimod in (select max(datmod || utimod)
               from tbl
         where datmod <> ' '
         group by utimod)


Message édité par MagicBuzz le 22-01-2004 à 17:16:25
n°619229
ant-103
Posté le 22-01-2004 à 17:25:52  profilanswer
 

non c une base de donnée mysql... mais je retiens

n°619233
art_dupond
je suis neuneu... oui oui !!
Posté le 22-01-2004 à 17:29:43  profilanswer
 

c'est quoi les || ?


---------------
oui oui
n°619236
ant-103
Posté le 22-01-2004 à 17:32:56  profilanswer
 

c 'OR'... ça marche aussi ?

n°619273
gizmo
Posté le 22-01-2004 à 18:12:05  profilanswer
 

art_dupond a écrit :

c'est quoi les || ?


dans les vrais SGDB, c'est la concaténation.
dans MySQL, c'est 'OR' [:spamafote]

n°619274
ant-103
Posté le 22-01-2004 à 18:15:24  profilanswer
 

Ah! bah g appris qqchose tien... :P

n°633496
dlaumor
Posté le 06-02-2004 à 13:47:48  profilanswer
 

Bonjour à tous,
 
Pour une requête sans concaténation essai qqchose comme ça.
 
SELECT A.USER_ID , A.MESSAGE  
FROM NOM_TABLE A,
(SELECT USER_ID as ID1 ,max(DT_MESSAGE) as DT_MAX  
FROM NOM_TABLE B
GROUP BY USER_ID)
where a.USER_ID = ID1
and A.DT_MESSAGE = DT_MAX  
 
ou créer une vue qui fait la requête  
SELECT USER_ID as ID1 ,max(DT_MESSAGE) as DT_MAX  
FROM NOM_TABLE B
GROUP BY USER_ID


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

  [SQL]J'arrive pas à trouver ma requête!

 

Sujets relatifs
[SQL] "outer join" et "sum", "min": requête problematiquebug de ASP - SQL serveur ?? tabulations et espaces aléatoires...
[postgreSQL][unix] scripts SQL et PL/SQL[SQL-CRYSTAL REPORT]
[DELPHI] Requete SQL ? [RESOLU][SQL Server] Minus
requête SQL qui ne passe pas sous Acces mais sous Oracle et MSSQL 
Plus de sujets relatifs à : [SQL]J'arrive pas à trouver ma requête!


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