Rapport SQL
Date: lundi 25 février 2013 14:33:28
Bonjour,
Lors de la création de rapport et la fusion de plusieurs tables, je rencontre le problème suivant:
Avec la table "flight" qui est la liste des vols
Et la table "flight_pilot" qui donne le pilote ou les pilotes des vols concernés
Donc dans le cas d'un vol en instruction il y a deux pilotes dans la table "flight_pilot"
Donc dans le resultat j'ai deux lignes pour le même vol, une ligne pour l'élève et une ligne pour l'instructeur
comment faire pour n'avoir qu'une ligne avec les informations des deux ?
Mon rapport:
SELECT flight.id As ID,
start_date AS Date,
aircraft_id AS Avion,
resource.name AS Avion,
CONCAT(FLOOR( duration /600), ':', TIME_FORMAT(SEC_TO_TIME(( duration /600 - FLOOR( duration /600))*3600),'%i')) AS Temps,
departure_location_id AS Depart,
oacid.icao_name AS Depart,
oacia.icao_name AS Arrivee,
pilot_id AS Pilote,
IF ((status_id=1),last_name,'') AS Nom,
IF ((status_id=1),first_name,'') AS Prenom,
IF ((status_id=3),last_name,'') AS Instructeur,
status_id AS Instructeur2,
landing_number AS Atterrissages,
flight_type_id AS 'Type de vol',
IF ((flight_type_id & 1 =0),'','X') AS 'tdp',
IF ((flight_type_id & 2 =0),'','X') AS 'loc',
IF ((flight_type_id & 4 =0),'','X') AS 'nav',
IF ((flight_type_id & 8 =0),'','X') AS 'Inst',
IF ((flight_type_id & 16 =0),'','X') AS 'vdn',
IF ((flight_type_id & 32 =0),'','X') AS 'simu',
IF ((flight_type_id & 64 =0),'','X') AS 'bpt ce rt',
IF ((flight_type_id & 128 =0),'','X') AS 'bpt ce ir',
IF ((flight_type_id & 256 =0),'','X') AS 'conv ce',
IF ((flight_type_id & 512 =0),'','X') AS 'meca'
FROM flight
LEFT JOIN flight_pilot ON flight_pilot.flight_id =flight.id
LEFT JOIN person ON person.id =flight_pilot.pilot_id
LEFT JOIN resource ON resource.id =flight.aircraft_id
LEFT JOIN location AS oacid ON oacid.id = flight.departure_location_id
LEFT JOIN location AS oacia ON oacia.id = flight.arrival_location_id
Merci pour votre aide.
Slts