Bonjour,
J'ai un problème de jointure qui me parait simple mais je n'y arrive pas ....
Voici mes tables :
Je voudrais creer une requete qui me permet de lister toutes mes applications
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 CREATE TABLE SERVER ( ID_SERVER INT NOT NULL AUTO_INCREMENT, NAME_SERVER VARCHAR(50) NOT NULL, DESC_SERVER VARCHAR(500), COM_SERVER VARCHAR(500), DATE_SERVER VARCHAR(50), IP_REQ_SERVER VARCHAR(50), PRIMARY KEY (ID_SERVER), UNIQUE KEY (NAME_SERVER) ); CREATE TABLE APPLICATION ( ID_APP INT NOT NULL AUTO_INCREMENT, NAME_APP VARCHAR(50) NOT NULL, DESC_APP VARCHAR(500), DOC_APP VARCHAR(500), COM_APP VARCHAR(500), CODE_APP VARCHAR(500), DATE_APP VARCHAR(50), IP_REQ_APP VARCHAR(50), PRIMARY KEY (ID_APP), UNIQUE KEY (NAME_APP) ); CREATE TABLE RPA ( ID_RPA INT NOT NULL AUTO_INCREMENT, NAME_RPA VARCHAR(50) NOT NULL, COM_RPA VARCHAR(500), DATE_RPA VARCHAR(50), IP_REQ_RPA VARCHAR(50), PRIMARY KEY (ID_RPA), UNIQUE KEY (NAME_RPA) ); CREATE TABLE ENV ( ID_ENV INT NOT NULL AUTO_INCREMENT, NAME_ENV VARCHAR(50) NOT NULL, DESC_ENV VARCHAR(500), COM_ENV VARCHAR(500), DATE_ENV VARCHAR(50), IP_REQ_ENV VARCHAR(50), PRIMARY KEY (ID_ENV), UNIQUE KEY (NAME_ENV) ); CREATE TABLE HOST ( ID_APP INT NOT NULL, ID_ENV INT NOT NULL, ID_SERVER INT NOT NULL, FOREIGN KEY (ID_APP) REFERENCES APPLICATION(ID_APP), FOREIGN KEY (ID_ENV) REFERENCES ENV(ID_ENV), FOREIGN KEY (ID_SERVER) REFERENCES SERVER(ID_SERVER), PRIMARY KEY (ID_APP, ID_ENV, ID_SERVER) ); CREATE TABLE RESPONSIBLE ( ID_APP INT NOT NULL, ID_RPA INT NOT NULL, FOREIGN KEY (ID_APP) REFERENCES APPLICATION(ID_APP), FOREIGN KEY (ID_RPA) REFERENCES RPA(ID_RPA), PRIMARY KEY (ID_APP, ID_RPA) );
et de sortir pour un serveur donné (ex : SRVTEST1) si l'application est installée sur celui-ci.
Ex : SRVTEST1, je veux savoir quelle application est installée dessus :
Si elle est installée dessus j'affich ele nom du server dans une colonne sinon j'affiche NULL.
Pour cela je fais ca et ca marche nickel :
Ce qui donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT APPLICATION.NAME_APP,APPLICATION.ID_APP,T1.NAME_SERVER FROM APPLICATION left join (SELECT SERVER.NAME_SERVER , HOST.ID_APP FROM HOST,SERVER WHERE HOST.ID_SERVER=SERVER.ID_SERVER AND SERVER.NAME_SERVER ='SRVTEST1') AS T1 on APPLICATION.ID_APP = T1.ID_APP;
maintenant à coté de la colonne NAME_SERVER je voudrais afficher l'envirronnement du serveur est question mais je ne sais pas comment faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 +----------+--------+-------------+ | NAME_APP | ID_APP | NAME_SERVER | +----------+--------+-------------+ | APPTEST1 | 1 | SRVTEST1 | | APPTEST2 | 2 | NULL | | APPTEST3 | 3 | NULL | +----------+--------+-------------+ 3 rows in set (0.00 sec)
Ce qui donnerai ca :
Avez vous une idée svp, sachant que j'ai une table qui stocke toutes ces infos :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 +----------+--------+-------------+-------------+ | NAME_APP | ID_APP | NAME_SERVER | NAME_ENV | +----------+--------+-------------+-------------+ | APPTEST1 | 1 | SRVTEST1 | PROD | | APPTEST2 | 2 | NULL | | APPTEST3 | 3 | NULL | +----------+--------+-------------+
Merci d'avance .....
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 TABLE HOST ID_APP ID_ENV ID_SERVER 1 1 1 1 2 3 2 2 2
Partager