Bonjour,

j'ai 3 tables qui se présentent ainsi :

applications { ID_application, Nom_application, Editeur_application, Version_application, ID_os, Commune ... }

applis_salles {ID_appli_salle, ID_salle, ID_application, Etat_application... }

os { ID_os, Nom_os }
En gros, une application peut être installée dans une salle via la table applis_salles et une application est liée à un système d'exploitation de ma table os.

Je veux afficher les applications qui ne sont pas installées dans une salle d' ID $ID_salle. Pour cela j'utilise la requête :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
SELECT A.* 
FROM applications A
WHERE NOT EXISTS (
				SELECT B.ID_application
				FROM applis_salles B
				WHERE B.ID_salle = $ID_salle
	                        AND A.ID_application = B.ID_application
)
AND A.commune = 0
Je voudrais coller au résultat que me renvoie cette requête le nom de l'os qui lui est associé en sachant que applications.ID_os peut être NULL et que je veux quand même afficher cette ligne.

Cette requête m'affiche uniquement les applications possédant un ID_os :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
SELECT A.*, C.*
FROM applications A, os C
WHERE NOT EXISTS (
				SELECT B.ID_application
				FROM applis_salles B
				WHERE B.ID_salle = $ID_salle
	                        AND A.ID_application = B.ID_application
)
AND A.commune = 0
AND C.ID_os = A.ID_os
J'ai essayé vainement en ajoutant des OR dans la condition WHERE mais j'obtiens des doublons ou autres résultats farfelus.

Ce que je veux obtenir est-il possible ? Si oui comment ?

Merci d'avance.