Requête SQL avec jointure

Requête SQL avec jointure - SQL/NoSQL - Programmation

Marsh Posté le 20-03-2012 à 19:22:41    

Bonjour à tous,
 
Je rencontre quelques difficultés pour construire une requête SQL.
Voilà une partie de ma base de données :
http://uploads.siteduzero.com/files/369001_370000/369042.jpg
- La table Hardwares correspond à du matériel IT
- La table Users à des utilisateurs
- La table Assignments correspond à des affectations de matériel à des utilisateurs.
Un matériel peut être affecté à un utilisateur à partir d'une certaine date puis réaffecté à un autre plus tard (l'historique des affectations est important pour moi).
 
Je souhaiterais par une requête SQL lister tous les matériels et pour chaque matériel afficher l'ID (voire le nom) du dernier utilisateur auquel il a été affecté :
SELECT MAX(id_assign) FROM hardwares INNER JOIN assign;
 
Important : si un matériel n'a jamais été affecté, il doit quand même apparaître dans la liste.
 
J'aimerais également faire la même chose mais pour un matériel unique :
SELECT MAX(id_assign) FROM hardwares INNER JOIN assign WHERE id_hardware = X;
 
 
 
Pensez-vous que mes requêtes sont correctes ?
Merci d'avance pour vos avis.

Reply

Marsh Posté le 20-03-2012 à 19:22:41   

Reply

Marsh Posté le 21-03-2012 à 08:59:26    

Essaye quelque chose comme ca:
 
Select a.label, d.fname, d.lname, c.DATE
FROM hardwares a
    LEFT JOIN (SELECT MAX(DATE), id_hardware FROM assignments GROUP BY id_hardware) b ON b.id_hardware = a.id_hardware
    LEFT JOIN assignments c on c.id_hardware = b.id_hardware and c.DATE = b.DATE
    LEFT JOIN users d on d.id_user = c.id_user


Message édité par Oliiii le 21-03-2012 à 09:00:05
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed