Requête SQL avec jointure - SQL/NoSQL - Programmation
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
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 :
- 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.