Bonsoir,
j'ai une bd nommée port, contenant 3 tables.
Les 2 tables concernées ici sont la table visites et la table bateaux.
On peut les visualiser ici:
http://anandamine.hostei.com/tables_...et_bateaux.php
Je désire retouver le nom du bateau qui était le plus souvent présent dans le port.
Pour celà pas de problème, j'effectue la requête ci-dessous.
Le problème se situe dans l'écriture de la requête: je répète 2 x le même bloc d'instructions et je n'arrive pas à la raccourcir même en utilisant les alias...
J'espère que qqn d'assez indulgent et calé pourra m'aider à la réduire de moitié.
Merci.
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 SELECT nom_bateau, SUM( nb_jours_bateau ) t FROM ( SELECT nom_bateau, SUM( TO_DAYS( date_sortie ) - TO_DAYS( date_entree ) ) AS nb_jours_bateau FROM bateaux INNER JOIN visites ON bateaux.id_bateau = visites.ref_bateau WHERE date_sortie IS NOT NULL GROUP BY nom_bateau UNION SELECT nom_bateau, SUM( TO_DAYS( NOW( ) ) - TO_DAYS( date_entree ) ) AS nb_jours_bateau_present FROM bateaux INNER JOIN visites ON bateaux.id_bateau = visites.ref_bateau WHERE date_sortie IS NULL GROUP BY nom_bateau )tt GROUP BY nom_bateau HAVING t= ( SELECT MAX( t ) FROM ( SELECT nom_bateau, SUM( nb_jours_bateau ) t FROM ( SELECT nom_bateau, SUM( TO_DAYS( date_sortie ) - TO_DAYS( date_entree ) ) AS nb_jours_bateau FROM bateaux INNER JOIN visites ON bateaux.id_bateau = visites.ref_bateau WHERE date_sortie IS NOT NULL GROUP BY nom_bateau UNION SELECT nom_bateau, SUM( TO_DAYS( NOW( ) ) - TO_DAYS( date_entree ) ) AS nb_jours_bateau_present FROM bateaux INNER JOIN visites ON bateaux.id_bateau = visites.ref_bateau WHERE date_sortie IS NULL GROUP BY nom_bateau )tt GROUP BY nom_bateau )ttt )
Partager