SQL : select d'un seul enregistrement

Résolu
Vasu Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -  
Vasu Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai un problème pour une requête SQL. Ma requête me retourne Nom, utilisateur et date du dernier inventaire :

Nom Utilisateur Dernier inventaire
AB XY 2005-09-30
AB XY 2005-10-31
CD VG 2005-08-03
CD VG 2006-03-15

Mais j'aimerais que le nom n'apparaisse qu'une fois avec la date la plus récente dans ma requête et non pas à chaque date enregistrée. Si ça peut aider, la date du dernier inventaire se trouve dans une table différente des 2 premiers champs.

Merci de votre aide.
A voir également:

4 réponses

chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Salut,
essaye:
SELECT /* CM, 27-jan-2005 */
, device.name
, device.user
,max( device_connection.dt_end)
FROM device, device_connection
WHERE
device.id = device_connection.device_id
group by device.name, device.user
ORDER BY device.name
0
Vasu Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   1
 
J'ai édité mon message du dessus. Ca fonctionne maintenant, mais je sais pas si c'est optimisé.

Meric beaucoup.
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
salut,
select u.nom,p.prenom,i.inv_name from utilisateur u,inventaire i where u.inv_id=i.inv_id and i.inv_date=(select max(inv_date) from inventaire)
Ca te donne quoi?
Ou sinon comment est faite ta requete?
@+
-1
Vasu Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   1
 
Voici ma requête (si jamais c'est une requête sql sous oracle). Mais ça m'affiche seulement l'enregistrement la date la plus grande et me met la même pour tout les enregistrements.

CREATE OR REPLACE VIEW DEVICE_V
(NAME,  USER, DEVICE_INVENTORY)
AS 

SELECT /* CM, 27-jan-2005 */
       , device.name
       , device.user
       , device_connection.dt_end        device_inventory
    
FROM device
       , device_connection

WHERE
	 device.id  = device_connection.device_id
	 AND device_connection.dt_end = (select max(dt_end) from device_connection)

ORDER BY device.name
-1
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Salut,
j'ai testé ca:
SELECT /* CM, 27-jan-2005 */
, device.name
, device.user
,max( device_connection.dt_end) device_inventory

FROM device
, device_connection

WHERE
device.id = device_connection.device_id
Sur une de mes bases oracle ca semble me donner le résultat voulu...
dis moi si c'est le résultat qu'il fallait!!
@+
-1
Vasu Messages postés 25 Date d'inscription   Statut Membre Dernière intervention   1
 
Hello,

désolé du retard, mais mon projet n'a lieu que le jeudi et vendredi, donc j'ai pas pu regarder depuis. Mais quand je fais ta sélection, j'ai une erreur oracle qui me dit : la fonction de groupe ne porte pas sur un groupe simple.

Donc j'ai modifié le code et maintenant ça fonctionne, mais par contre je sais pas si c'est de la meilleure façon que je m'y prend :

SELECT DISTINCT/* CM, 27-jan-2005 */
, device.name
, device.user
,(select max( dt_end) from device_connection where device_id = device.id) device_inventory

FROM device
, device_connection

WHERE
device.id = device_connection.device_id

Avec mon select imbriqué, il me sortait la dernière date de connexion, mais x fois, alors j'ai ajouté le DISTINCT pour n'avoir qu'un seul enregistrement par device.
Merci encore de ton aide. Tu m'as bien aiguillé ;-).
0