<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://doc-en.openflyers.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lelhidam</id>
	<title>OpenFlyers Documentation - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://doc-en.openflyers.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lelhidam"/>
	<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/Special:Contributions/Lelhidam"/>
	<updated>2026-04-03T23:39:38Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=386</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=386"/>
		<updated>2025-10-13T12:33:34Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Flight log book */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or -1) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS _tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate,&lt;br /&gt;
_tr(MAINTENANCE_SELECTED_END_DATE_ALERT) COLLATE utf8mb3_general_ci,&lt;br /&gt;
'') AS _tr(RESOURCE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_HOURS),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_DAYS)&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name,&lt;br /&gt;
SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)),&lt;br /&gt;
SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate,&lt;br /&gt;
_tr(MAINTENANCE_SELECTED_END_DATE_ALERT) COLLATE utf8mb3_general_ci,&lt;br /&gt;
'') AS _tr(RESOURCE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_START_DATE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_END_DATE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_HOURS),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_DAYS)&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name,&lt;br /&gt;
booking.start_date,&lt;br /&gt;
booking.end_date,&lt;br /&gt;
TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),&lt;br /&gt;
TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer) represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of flights per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*'''$year''' (Type : Year)&lt;br /&gt;
*'''$activityTypeId''' (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT COUNT(*) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    COUNT(*) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS _tr(REPORT_MONTH), CONCAT(left_person.last_name, ' ', left_person.first_name) AS _tr(REPORT_FIRST_PLACE_PERSON), activity_type.name AS _tr(ACTIVITY_TYPE), sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS _tr(ACTIVITY_DURATION)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id=$personId)&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            \'S\', &lt;br /&gt;
            \'D\'&lt;br /&gt;
        ) AS _tr(ALONE_DC),&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
    ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_BEFORE_ACTIVITY), ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_AFTER_ACTIVITY)'&lt;br /&gt;
        )&lt;br /&gt;
        SEPARATOR ', '&lt;br /&gt;
    ),&lt;br /&gt;
    IFNULL(CONCAT(', ',&lt;br /&gt;
    (&lt;br /&gt;
        SELECT GROUP_CONCAT(&lt;br /&gt;
            CONCAT(&lt;br /&gt;
                IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
                ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
                            FROM business_field_content&lt;br /&gt;
                            RIGHT JOIN business_field ON (business_field.id = business_field_content.business_field_id)&lt;br /&gt;
                            RIGHT JOIN person AS tmp_person ON (tmp_person.id = business_field_content.content)&lt;br /&gt;
                                WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
                            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
                            FROM business_field_content&lt;br /&gt;
                            RIGHT JOIN business_field ON (business_field.id = business_field_content.business_field_id)&lt;br /&gt;
                            WHERE business_field_content.category_id = flight.id&lt;br /&gt;
                                AND business_field_content.business_field_id = '&lt;br /&gt;
                    ),&lt;br /&gt;
                    business_field.id,&lt;br /&gt;
                    ') AS \'',&lt;br /&gt;
                    REPLACE(business_field.label,  '\'', '\\\''),&lt;br /&gt;
                    '\''&lt;br /&gt;
                )&lt;br /&gt;
                SEPARATOR ', '&lt;br /&gt;
                )&lt;br /&gt;
                FROM business_field&lt;br /&gt;
                WHERE business_field.category = 'FLIGHT'&lt;br /&gt;
            )&lt;br /&gt;
        ), ''),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON activity_type.id = flight.activity_type_id&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = ', $year ,' AND flight_pilot.num = 0 AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM tank;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
*See [[OF_doc-fr:Suivi-des-remarques-de-maintenance|Suivi des remarques de maintenance]]&lt;br /&gt;
&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Accounting-exports&amp;diff=382</id>
		<title>Accounting exports</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Accounting-exports&amp;diff=382"/>
		<updated>2025-04-25T11:43:45Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Statement serving as invoice with flight details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
This page lists SQL requests for OpenFlyers release 4 export about Accounting.&lt;br /&gt;
&lt;br /&gt;
=Balances of resource accounts=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT IFNULL(CONCAT(&lt;br /&gt;
    'SELECT resource.name \'_tr(NAME)\',',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            ' (SELECT sumAccountEntry(account.id, '$endDate') AS balance&lt;br /&gt;
               FROM account&lt;br /&gt;
               LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
               WHERE account_type.activated=1&lt;br /&gt;
                 AND account.category=3&lt;br /&gt;
                 AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= '$endDate') )&lt;br /&gt;
                 AND account.owner_id=resource.id&lt;br /&gt;
                 AND account.account_type=',&lt;br /&gt;
            account_type.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(account_type.name, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', (SELECT SUM(sumAccountEntry(account.id, '$endDate')) AS balance&lt;br /&gt;
       FROM account&lt;br /&gt;
       LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
       WHERE account_type.activated=1&lt;br /&gt;
         AND account.category=3&lt;br /&gt;
         AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= '$endDate') )&lt;br /&gt;
         AND account.owner_id=resource.id&lt;br /&gt;
       GROUP BY account.owner_id&lt;br /&gt;
    ) AS \'_tr(TOTAL)\'&lt;br /&gt;
    FROM resource WHERE resource.physical=1 AND resource.activated=1 GROUP BY resource.id'&lt;br /&gt;
), 'SELECT \'\'')&lt;br /&gt;
FROM account_type&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account_type.accounting_id&lt;br /&gt;
WHERE account_type.category=3&lt;br /&gt;
  AND account_type.activated=1&lt;br /&gt;
  AND accounting.id=$accountingId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Breakdown by resource accounts of customer invoices=&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT customer_bill_entry.bill_date  AS _tr(DATE),&lt;br /&gt;
	CONCAT(resource_account_type.name, ' - ', resource_account.name) AS _tr(RESOURCE_ACCOUNT),&lt;br /&gt;
    product.label AS _tr(PRODUCT),&lt;br /&gt;
    customer_bill_entry.debit AS _tr(DEBIT),&lt;br /&gt;
    customer_bill_entry.credit AS _tr(CREDIT),&lt;br /&gt;
    CONCAT(person_account_type.name, ' - ', person.last_name, ' ', IFNULL(person.first_name, '')) AS  _tr(ACCOUNT_MEMBER_ACCOUNT)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN person ON person.id = customer_bill_entry.owner_id AND customer_bill_entry.owner_category = 2&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN account_entry AS person_account_entry ON person_account_entry.id = customer_bill_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account AS person_account ON person_account.id = person_account_entry.account_id&lt;br /&gt;
LEFT JOIN account_type AS person_account_type ON person_account_type.id = person_account.account_type&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN product ON product.id = customer_bill_entry.product_id&lt;br /&gt;
 &lt;br /&gt;
INNER JOIN account_entry AS resource_account_entry ON resource_account_entry.flow_id = customer_bill_entry.account_entry_flow_id&lt;br /&gt;
INNER JOIN account AS resource_account ON resource_account.id = resource_account_entry.account_id AND resource_account.category = 3&lt;br /&gt;
LEFT JOIN account_type AS resource_account_type ON resource_account_type.id = resource_account.account_type&lt;br /&gt;
 &lt;br /&gt;
WHERE bill_date &amp;gt;= $startDate AND bill_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY bill_date;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Carry forwards=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF (account.category = 2, CONCAT(person.last_name,'  &lt;br /&gt;
',IFNULL(person.first_name, ''),' (',account_type.name,')'),&lt;br /&gt;
    IF (account.category = 3,CONCAT(resource.name,'  &lt;br /&gt;
(',account_type.name,')'),account.name)) AS Nom,&lt;br /&gt;
    export_account AS Code_comptable,&lt;br /&gt;
    debit AS 'Debit',&lt;br /&gt;
    credit AS 'Credit'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN balance ON balance.account_id=account.id&lt;br /&gt;
LEFT JOIN person ON person.id=account.owner_id AND account.category = 2&lt;br /&gt;
LEFT JOIN resource ON resource.id=account.owner_id AND account.category = 3&lt;br /&gt;
LEFT JOIN account_type ON account_type.id=account.account_type&lt;br /&gt;
WHERE account.activated = 1&lt;br /&gt;
  AND balance.balance_date_id = (SELECT balance_date.id FROM balance_date ORDER BY balance_date.id DESC LIMIT 1)&lt;br /&gt;
  AND accounting.id=$accountingId&lt;br /&gt;
  AND (&lt;br /&gt;
      (person.id IS NULL AND resource.id IS NULL)&lt;br /&gt;
      OR&lt;br /&gt;
      (person.activated=1 AND account.category=2)&lt;br /&gt;
      OR&lt;br /&gt;
      (resource.activated=1 AND account.category=3)&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY Nom ASC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Category account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CASE&lt;br /&gt;
        WHEN account.category=1 THEN _tr(OTHER_ACCOUNT)&lt;br /&gt;
        WHEN account_type.name IS NOT NULL AND (account.category=2) THEN CONCAT(_tr(MEMBER_ACCOUNT), ' - ', account_type.name)&lt;br /&gt;
        WHEN account_type.name IS NOT NULL AND (account.category=3) THEN CONCAT(_tr(RESOURCE_ACCOUNT), ' - ', account_type.name)&lt;br /&gt;
        WHEN account.category=4 THEN _tr(SUPPLIER_ACCOUNT)&lt;br /&gt;
        WHEN account.category=6 THEN _tr(ACCOUNT_VAT_ACCOUNT)&lt;br /&gt;
        WHEN account.category=7 THEN _tr(ACCOUNT_EXPENSE_ACCOUNT)&lt;br /&gt;
        WHEN account.category=8 THEN _tr(TREASURY_ACCOUNT)&lt;br /&gt;
        WHEN account.category=9 THEN _tr(PRODUCT_ACCOUNT)&lt;br /&gt;
        WHEN account.category=10 THEN _tr(BALANCE_SHEET_ACCOUNT)&lt;br /&gt;
        WHEN account.category=11 THEN _tr(CUSTOMER_ACCOUNT)&lt;br /&gt;
        ELSE account.name&lt;br /&gt;
    END AS _tr(ACCOUNT_TYPE),&lt;br /&gt;
    IFNULL(SUM( sumAccountEntry(account.id,NOW())),0) AS _tr(ACCOUNT_BALANCE)&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN account_type ON (account.account_type = account_type.id AND account.category IN(2,3))&lt;br /&gt;
LEFT JOIN person ON (account.owner_id = person.id AND account.category=2)&lt;br /&gt;
LEFT JOIN resource ON (account.owner_id = resource.id AND account.category=3)&lt;br /&gt;
WHERE account.activated = 1&lt;br /&gt;
  AND accounting.id=$accountingId&lt;br /&gt;
  AND (&lt;br /&gt;
      (person.id IS NULL AND resource.id IS NULL)&lt;br /&gt;
      OR&lt;br /&gt;
      (person.activated=1 AND account.category=2)&lt;br /&gt;
      OR&lt;br /&gt;
      (resource.activated=1 AND account.category=3)&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY account.category&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Cheque deposit slip=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT date_format(ae.registration_date, &amp;quot;%d/%m/%Y&amp;quot;) as &amp;quot;date&amp;quot;, a.name, formatDecimal(ae.credit) as montant, ae.payment_description as libelle, &lt;br /&gt;
(SELECT a2.name FROM account_entry ae2 JOIN account a2 ON a2.id = ae2.account_id WHERE ae2.flow_id = ae.flow_id AND ae2.debit &amp;gt; 0 LIMIT 0,1) as compte_banque, ae.comments as commentaire&lt;br /&gt;
FROM account_entry ae&lt;br /&gt;
JOIN account a&lt;br /&gt;
  ON ae.account_id = a.id&lt;br /&gt;
WHERE a.account_type = 1&lt;br /&gt;
  AND ae.validated = 1&lt;br /&gt;
  AND ae.credit &amp;gt; 0&lt;br /&gt;
ORDER BY ae.registration_date DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Customer bill between date=&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT customer_bill_entry.bill_date AS _tr(DATE), CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=download_customer_bill&amp;amp;menuParameter=', customer_bill_entry.flow_id, ']', customer_bill_entry.customer_bill_id, '[/LINK]' ) AS _tr(BILL)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
WHERE customer_bill_entry.bill_date &amp;gt;= $startDate AND customer_bill_entry.bill_date &amp;lt; $endDate&lt;br /&gt;
GROUP BY customer_bill_entry.customer_bill_id&lt;br /&gt;
ORDER BY customer_bill_entry.customer_bill_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Customer bill per month and per accounting=&lt;br /&gt;
* Variable '''$accountingId''' should be defined first and should be of '''dbOject::Accounting''' value type.&lt;br /&gt;
* Variable '''$month''' should be defined first and should be of '''Month''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.name AS _tr(CUSTOMER), resource_type.name AS _tr(RESOURCE), product.label AS _tr(PRODUCT), SUM(customer_bill_entry.qty) AS _tr(QUANTITY), SUM(customer_bill_entry.debit) AS _tr(AMOUNT)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
LEFT JOIN account_entry ON (account_entry.flow_id=customer_bill_entry.account_entry_flow_id AND account_entry.id=customer_bill_entry.account_entry_id)&lt;br /&gt;
LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
LEFT JOIN accounting ON (accounting.id=account.accounting_id)&lt;br /&gt;
LEFT JOIN product ON (product.id=customer_bill_entry.product_id)&lt;br /&gt;
LEFT JOIN flight_account_entry ON (account_entry.flow_id=flight_account_entry.account_entry_id)&lt;br /&gt;
LEFT JOIN flight ON (flight.id=flight_account_entry.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
WHERE account.category = 2&lt;br /&gt;
  AND accounting.id = $accountingId&lt;br /&gt;
  AND YEAR(account_entry.account_date) = $year&lt;br /&gt;
  AND MONTH(account_entry.account_date) = $month&lt;br /&gt;
GROUP BY account.id, resource_type.id, product.id&lt;br /&gt;
ORDER BY account.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Get the details (specially the id) of an account according its name=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `account` WHERE `name` LIKE 'account name to search'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Get the user owner of an account=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM person RIGHT JOIN account ON person.id=account.owner_id WHERE account.id=114&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global account balance=&lt;br /&gt;
List whole account balance at the end of a given date :&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.id, export_account, account.name,&lt;br /&gt;
IFNULL(sumAccountEntry(account.id, $endDate), 0) AS solde&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON (accounting.id=account.accounting_id)&lt;br /&gt;
LEFT JOIN person ON (person.id=account.owner_id AND account.category=2)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=account.owner_id AND account.category=3)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate) )&lt;br /&gt;
ORDER BY 2, 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global account balance last subscription=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$validityTypeId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name, ' ', first_name) AS _tr(FULL_NAME),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY),&lt;br /&gt;
    grant_date AS _tr(VALIDITY_GRANT_DATE),&lt;br /&gt;
    IFNULL((&lt;br /&gt;
        SELECT SUM(account_entry.credit) - SUM(account_entry.debit)&lt;br /&gt;
        FROM account_entry &lt;br /&gt;
        WHERE account_entry.account_id = account.id&lt;br /&gt;
          AND account_entry.account_date &amp;gt; (&lt;br /&gt;
              SELECT balance_date &lt;br /&gt;
              FROM balance_date&lt;br /&gt;
              ORDER BY balance_date DESC&lt;br /&gt;
              LIMIT 1&lt;br /&gt;
          )), 0&lt;br /&gt;
    ) + balance.credit - balance.debit AS Total&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON validity.person_id = person.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id = validity.validity_type_id&lt;br /&gt;
LEFT JOIN account ON account.owner_id = person.id AND account.category = 2&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN balance ON balance.account_id = account.id&lt;br /&gt;
  AND balance.balance_date_id = (&lt;br /&gt;
      SELECT id&lt;br /&gt;
      FROM balance_date&lt;br /&gt;
      ORDER BY balance_date ASC&lt;br /&gt;
      LIMIT 1&lt;br /&gt;
  )&lt;br /&gt;
WHERE grant_date &amp;lt; DATE_SUB(NOW(), INTERVAL 2 YEAR)&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND CAST(accounting.id AS CHAR) =$accountingId&lt;br /&gt;
  AND account.activated = 1&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global non null account balance=&lt;br /&gt;
*List whole account balance at the end of a given date but for only non null account balance&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
    CONCAT( \'[LINK=index.php?menuAction=account_journal&amp;amp;menuParameter=\', accountsSum.account_id, \']\', accountsSum.account_id, \'[/LINK]\' ) AS _tr(ID),&lt;br /&gt;
    accountLayout.export_account AS _tr(ACCOUNT_EXPORT), &lt;br /&gt;
	CASE&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=2 THEN CONCAT(_tr(MEMBER_ACCOUNT), \' \', account_type.name,  \' \', _tr(REPORTS_OF), \' \', person.last_name, \' \', IFNULL(person.first_name, \'\'))&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=3 THEN CONCAT(_tr(AIRCRAFT_ACCOUNT), \' \', account_type.name, \' \', _tr(REPORTS_OF), \' \', resource.name)&lt;br /&gt;
			WHEN accountLayout.category=1 THEN CONCAT(_tr(OTHER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=4 THEN CONCAT(_tr(SUPPLIER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=6 THEN CONCAT(_tr(VAT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=7 THEN CONCAT(_tr(EXPENSE_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=8 THEN CONCAT(_tr(TREASURY_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=9 THEN CONCAT(_tr(PRODUCT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=10 THEN CONCAT(_tr(BALANCE_SHEET_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=11 THEN CONCAT(_tr(CUSTOMER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			ELSE accountLayout.name&lt;br /&gt;
	END AS _tr(ACCOUNT),&lt;br /&gt;
	accountsSum.SOLDE AS _tr(ACCOUNT_BALANCE)&lt;br /&gt;
	FROM (&lt;br /&gt;
		SELECT accountEntriesExtract.account_id,&lt;br /&gt;
		(IFNULL(SUM(accountEntriesExtract.credit), 0.00)  - IFNULL(SUM(accountEntriesExtract.debit), 0.00) ) AS SOLDE&lt;br /&gt;
		FROM (&lt;br /&gt;
			(SELECT account_entry.account_id,&lt;br /&gt;
			IFNULL(account_entry.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(account_entry.credit, 0.00) AS credit&lt;br /&gt;
			FROM account_entry&lt;br /&gt;
			INNER JOIN account ON (account.id = account_entry.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
			WHERE account_date &amp;gt;= \'', balance_date.balance_date ,'\' AND account_date &amp;lt; $endDate&lt;br /&gt;
			)&lt;br /&gt;
			UNION ALL&lt;br /&gt;
			(&lt;br /&gt;
			SELECT &lt;br /&gt;
			account_id,&lt;br /&gt;
			IFNULL(balance.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(balance.credit, 0.00) AS credit&lt;br /&gt;
			FROM balance&lt;br /&gt;
			INNER JOIN account ON (account.id = balance.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
			WHERE balance_date_id = ',  balance_date.id, '&lt;br /&gt;
			)&lt;br /&gt;
		) AS accountEntriesExtract&lt;br /&gt;
		GROUP BY accountEntriesExtract.account_id&lt;br /&gt;
        HAVING SOLDE NOT IN (\'0 \', \'0.00\', \'0,00\')&lt;br /&gt;
	) AS accountsSum&lt;br /&gt;
	INNER JOIN account accountLayout ON (accountLayout.id = accountsSum.account_id AND accountLayout.accounting_id=$accountingId AND (accountLayout.activated = 1 OR (accountLayout.activated=0 AND accountLayout.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
	LEFT JOIN account_type ON (accountLayout.account_type = account_type.id AND accountLayout.category IN(2,3))&lt;br /&gt;
	LEFT JOIN person ON (person.id=accountLayout.owner_id AND accountLayout.category=2) &lt;br /&gt;
	LEFT JOIN resource ON (resource.id=accountLayout.owner_id AND accountLayout.category=3) &lt;br /&gt;
    GROUP BY accountLayout.id &lt;br /&gt;
    ORDER BY accountLayout.export_account ASC&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM balance_date&lt;br /&gt;
WHERE balance_date.balance_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY balance_date DESC&lt;br /&gt;
LIMIT 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=List of all account debit, credit=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT accountLayout.export_account AS _tr(ACCOUNT_EXPORT), &lt;br /&gt;
	CASE&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=2 THEN CONCAT(_tr(MEMBER_ACCOUNT), \' \', account_type.name,  \' \', _tr(REPORTS_OF), \' \', person.last_name, \' \', IFNULL(person.first_name, \'\'))&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=3 THEN CONCAT(_tr(AIRCRAFT_ACCOUNT), \' \', account_type.name, \' \', _tr(REPORTS_OF), \' \', resource.name)&lt;br /&gt;
			WHEN accountLayout.category=1 THEN CONCAT(_tr(OTHER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=4 THEN CONCAT(_tr(SUPPLIER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=6 THEN CONCAT(_tr(VAT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=7 THEN CONCAT(_tr(EXPENSE_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=8 THEN CONCAT(_tr(TREASURY_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=9 THEN CONCAT(_tr(PRODUCT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=10 THEN CONCAT(_tr(BALANCE_SHEET_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=11 THEN CONCAT(_tr(CUSTOMER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			ELSE accountLayout.name&lt;br /&gt;
	END AS _tr(ACCOUNT),&lt;br /&gt;
	IF((@sumAccountEntry := (accountsSum.CREDIT - accountsSum.DEBIT)) &amp;lt; 0, @sumAccountEntry, 0) AS _tr(DEBIT),&lt;br /&gt;
	IF(@sumAccountEntry &amp;lt; 0, 0, @sumAccountEntry) AS _tr(CREDIT)&lt;br /&gt;
	FROM (&lt;br /&gt;
		SELECT accountEntriesExtract.account_id,&lt;br /&gt;
		IFNULL(SUM(accountEntriesExtract.debit), 0.00) AS DEBIT,&lt;br /&gt;
		IFNULL(SUM(accountEntriesExtract.credit), 0.00) AS CREDIT&lt;br /&gt;
		FROM (&lt;br /&gt;
			(SELECT account_entry.account_id,&lt;br /&gt;
			IFNULL(account_entry.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(account_entry.credit, 0.00) AS credit&lt;br /&gt;
			FROM account_entry&lt;br /&gt;
			INNER JOIN account ON (account.id = account_entry.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
			WHERE account_date &amp;gt;= \'', balance_date.balance_date ,'\' AND account_date &amp;lt; $endDate&lt;br /&gt;
			)&lt;br /&gt;
			UNION ALL&lt;br /&gt;
			(&lt;br /&gt;
			SELECT &lt;br /&gt;
			account_id,&lt;br /&gt;
			IFNULL(balance.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(balance.credit, 0.00) AS credit&lt;br /&gt;
			FROM balance&lt;br /&gt;
			INNER JOIN account ON (account.id = balance.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
			WHERE balance_date_id = ',  balance_date.id, '&lt;br /&gt;
			)&lt;br /&gt;
		) AS accountEntriesExtract&lt;br /&gt;
		GROUP BY accountEntriesExtract.account_id&lt;br /&gt;
	) AS accountsSum&lt;br /&gt;
	INNER JOIN account accountLayout ON (accountLayout.id = accountsSum.account_id AND accountLayout.accounting_id=$accountingId AND (accountLayout.activated = 1 OR (accountLayout.activated=0 AND accountLayout.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
	LEFT JOIN account_type ON (accountLayout.account_type = account_type.id AND accountLayout.category IN(2,3))&lt;br /&gt;
	LEFT JOIN person ON (person.id=accountLayout.owner_id AND accountLayout.category=2) &lt;br /&gt;
	LEFT JOIN resource ON (resource.id=accountLayout.owner_id AND accountLayout.category=3) &lt;br /&gt;
    GROUP BY accountLayout.id &lt;br /&gt;
    ORDER BY accountLayout.export_account ASC&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM balance_date&lt;br /&gt;
WHERE balance_date.balance_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY balance_date DESC&lt;br /&gt;
LIMIT 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Monthly distribution of revenue=&lt;br /&gt;
*In [http://fr.wikipedia.org/wiki/Plan_comptable_g%C3%A9n%C3%A9ral_%28France%29#Cadre_comptable french accounting], this query reports each month's revenue distribution. It only concerns [http://doc-fr.openflyers.com/index.php?title=Account#Comptes_de_produits product accounts] (prefixed 7xx) except those that are prefixed 709xxx&lt;br /&gt;
*Additional field $year is needed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account_name,&lt;br /&gt;
    ( IF(febSum&amp;lt;0, febSum, 0) - IF(janSum&amp;lt;0, janSum, 0) + IF(febSum&amp;lt;0, 0, febSum) - IF(janSum&amp;lt;0, 0, janSum) ) AS Janu,&lt;br /&gt;
    ( IF(marSum&amp;lt;0, marSum, 0) - IF(febSum&amp;lt;0, febSum, 0) + IF(marSum&amp;lt;0, 0, marSum) - IF(febSum&amp;lt;0, 0, febSum) ) AS Febr,&lt;br /&gt;
    ( IF(aprSum&amp;lt;0, aprSum, 0) - IF(marSum&amp;lt;0, marSum, 0) + IF(aprSum&amp;lt;0, 0, aprSum) - IF(marSum&amp;lt;0, 0, marSum) ) AS Marc,&lt;br /&gt;
    ( IF(maySum&amp;lt;0, maySum, 0) - IF(aprSum&amp;lt;0, aprSum, 0) + IF(maySum&amp;lt;0, 0, maySum) - IF(aprSum&amp;lt;0, 0, aprSum) ) AS April,&lt;br /&gt;
    ( IF(junSum&amp;lt;0, junSum, 0) - IF(maySum&amp;lt;0, maySum, 0) + IF(junSum&amp;lt;0, 0, junSum) - IF(maySum&amp;lt;0, 0, maySum) ) AS May,&lt;br /&gt;
    ( IF(julSum&amp;lt;0, julSum, 0) - IF(junSum&amp;lt;0, junSum, 0) + IF(julSum&amp;lt;0, 0, julSum) - IF(junSum&amp;lt;0, 0, junSum) ) AS June,&lt;br /&gt;
    ( IF(augSum&amp;lt;0, augSum, 0) - IF(julSum&amp;lt;0, julSum, 0) + IF(augSum&amp;lt;0, 0, augSum) - IF(julSum&amp;lt;0, 0, julSum) ) AS July,&lt;br /&gt;
    ( IF(sepSum&amp;lt;0, sepSum, 0) - IF(augSum&amp;lt;0, augSum, 0) + IF(sepSum&amp;lt;0, 0, sepSum) - IF(augSum&amp;lt;0, 0, augSum) ) AS Augu,&lt;br /&gt;
    ( IF(octSum&amp;lt;0, octSum, 0) - IF(sepSum&amp;lt;0, sepSum, 0) + IF(octSum&amp;lt;0, 0, octSum) - IF(sepSum&amp;lt;0, 0, sepSum) ) AS Sept,&lt;br /&gt;
    ( IF(novSum&amp;lt;0, novSum, 0) - IF(octSum&amp;lt;0, octSum, 0) + IF(novSum&amp;lt;0, 0, novSum) - IF(octSum&amp;lt;0, 0, octSum) ) AS Octo,&lt;br /&gt;
    ( IF(decSum&amp;lt;0, decSum, 0) - IF(novSum&amp;lt;0, novSum, 0) + IF(decSum&amp;lt;0, 0, decSum) - IF(novSum&amp;lt;0, 0, novSum) ) AS Nove,&lt;br /&gt;
    ( IF(nextJanSum&amp;lt;0, nextJanSum, 0) - IF(decSum&amp;lt;0, decSum, 0) + IF(nextJanSum&amp;lt;0, 0, nextJanSum) - IF(decSum&amp;lt;0, 0, decSum) ) AS Dece&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT IF(account.category=3, CONCAT(account.name, ' - ', account_type.name), account.name) AS 'account_name',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-01-01') AS 'janSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-02-01') AS 'febSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-03-01') AS 'marSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-04-01') AS 'aprSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-05-01') AS 'maySum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-06-01') AS 'junSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-07-01') AS 'julSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-08-01') AS 'augSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-09-01') AS 'sepSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-10-01') AS 'octSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-11-01') AS 'novSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-12-01') AS 'decSum',&lt;br /&gt;
    sumAccountEntry(account.id, DATE_ADD('$year-01-01', INTERVAL 12 MONTH)) AS 'nextJanSum'&lt;br /&gt;
    FROM account&lt;br /&gt;
    LEFT JOIN account_type ON (account_type.id = account.account_type)&lt;br /&gt;
    WHERE account.export_account LIKE '7%' AND account.export_account NOT LIKE '709%' AND account.activated=1&lt;br /&gt;
) AS sumAccountEntryForAccount&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Movements total per account between two dates=&lt;br /&gt;
* Variable '''$accountingId''' should be defined first and should be of '''dbOject::Accounting''' value type&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date/Date and time''' value type&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.id, export_account, account.name, IFNULL( SUM(account_entry.credit) - SUM(account_entry.debit), 0 ) AS 'Total'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN account_entry ON (account.id=account_entry.account_id)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date &amp;lt; $endDate&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $startDate) )&lt;br /&gt;
GROUP BY account.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT '', '_', 'Total', IFNULL( SUM(account_entry.credit) - SUM(account_entry.debit), 0 ) AS 'Solde'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN account_entry ON (account.id=account_entry.account_id)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date &amp;lt; $endDate&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $startDate) )&lt;br /&gt;
ORDER BY 2, 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Non balanced flow=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flow_id, SUM(debit) AS totalDebit, SUM(credit) AS totalCredit&lt;br /&gt;
FROM account_entry&lt;br /&gt;
GROUP BY flow_id&lt;br /&gt;
HAVING totalDebit &amp;lt;&amp;gt; totalCredit&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Online payment attempts list=&lt;br /&gt;
Required additional field:&lt;br /&gt;
*$endDate Date type&lt;br /&gt;
*$startDate Date type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT psp_transaction.transaction_date, account.name, psp_transaction.amount, psp_transaction.state FROM psp_transaction&lt;br /&gt;
LEFT JOIN account ON account.id=psp_transaction.credit_account_id&lt;br /&gt;
WHERE psp_transaction.transaction_date &amp;gt;= $startDate AND psp_transaction.transaction_date&amp;lt;=$endDate&lt;br /&gt;
ORDER BY psp_transaction.transaction_date DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Payment dispatching=&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT payment_type AS Num, payment_type.name AS name,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 1 AND payment_type = Num) AS Janu,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 2 AND payment_type = Num) AS Febr,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 3 AND payment_type = Num) AS Marc,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 4 AND payment_type = Num) AS Apri,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 5 AND payment_type = Num) AS May,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 6 AND payment_type = Num) AS June,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 7 AND payment_type = Num) AS July,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 8 AND payment_type = Num) AS Augu,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 9 AND payment_type = Num) AS Sept,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 10 AND payment_type = Num) AS Octo,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 11 AND payment_type = Num) AS Nove,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 12 AND payment_type = Num) AS Dece,&lt;br /&gt;
SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS Total  FROM account_entry LEFT JOIN payment_type ON payment_type = payment_type.id WHERE YEAR( account_date ) = $year AND payment_type IS NOT NULL GROUP BY payment_type UNION SELECT  'Sum per',&lt;br /&gt;
'month',&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 1 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 2 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 3 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 4 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 5 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 6 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 7 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 8 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 9 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 10 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 11 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 12 AND payment_type IS NOT NULL),&lt;br /&gt;
SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS Total FROM account_entry LEFT JOIN payment_type ON payment_type = payment_type.id WHERE YEAR( account_date ) = $year AND payment_type IS NOT NULL&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Payment type=&lt;br /&gt;
Payment types list ordered by type&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of '''Date''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date''' value type.&lt;br /&gt;
*Variable '''$paymentType''' should be defined first and should be of '''dbObject::PaymentType''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT payment_type.name AS _tr(ENCASHMENT_TYPE),&lt;br /&gt;
       IF(account.category = 2, CONCAT( person.last_name, ' ', person.first_name), account.name) AS _tr(NAME), &lt;br /&gt;
       DATE(account_entry.account_date) AS _tr(DATE), &lt;br /&gt;
       account_entry.payment_description AS _tr(DESCRIPTION), account_entry.credit AS _tr(AMOUNT)&lt;br /&gt;
FROM account_entry&lt;br /&gt;
LEFT JOIN payment_type ON payment_type.id = account_entry.payment_type&lt;br /&gt;
LEFT JOIN account ON account.id = account_entry.account_id&lt;br /&gt;
LEFT JOIN person ON person.id = account.owner_id&lt;br /&gt;
WHERE&lt;br /&gt;
    CASE&lt;br /&gt;
        WHEN ($paymentType='') THEN account_entry.payment_type IS NOT NULL&lt;br /&gt;
        ELSE account_entry.payment_type=$paymentType&lt;br /&gt;
    END&lt;br /&gt;
 AND credit &amp;gt; 0 AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date  &amp;lt;= $endDate&lt;br /&gt;
ORDER BY 1, 3, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Resource account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT IFNULL(CONCAT(&lt;br /&gt;
    'SELECT resource.name \'_tr(NAME)\',',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            ' (SELECT sumAccountEntry(account.id, \'$endDate\') AS balance&lt;br /&gt;
               FROM account&lt;br /&gt;
               LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
               WHERE account_type.activated=1&lt;br /&gt;
                 AND account.category=3&lt;br /&gt;
                 AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'$endDate\') )&lt;br /&gt;
                 AND account.owner_id=resource.id&lt;br /&gt;
                 AND account.account_type=',&lt;br /&gt;
            account_type.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(account_type.name, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', (SELECT SUM(sumAccountEntry(account.id, \'$endDate\')) AS balance&lt;br /&gt;
       FROM account&lt;br /&gt;
       LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
       WHERE account_type.activated=1&lt;br /&gt;
         AND account.category=3&lt;br /&gt;
         AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'$endDate\') )&lt;br /&gt;
         AND account.owner_id=resource.id&lt;br /&gt;
       GROUP BY account.owner_id&lt;br /&gt;
    ) AS \'_tr(TOTAL)\'&lt;br /&gt;
    FROM resource WHERE resource.physical=1 AND resource.activated=1 GROUP BY resource.id'&lt;br /&gt;
), 'SELECT \'\'')&lt;br /&gt;
FROM account_type&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account_type.accounting_id&lt;br /&gt;
WHERE account_type.category=3&lt;br /&gt;
  AND account_type.activated=1&lt;br /&gt;
  AND accounting.id='$accountingId'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Statement serving as invoice=&lt;br /&gt;
*Variable '''$startDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be of '''Integer''' value type. &lt;br /&gt;
*Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight_list.duree )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight_list.duree )/600 - FLOOR(SUM( flight_list.duree )/600))*3600),'%i')) AS _tr(COMPLETED_HOURS_NUMBER),&lt;br /&gt;
SUM(flight_list.montant) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM person&lt;br /&gt;
JOIN&lt;br /&gt;
(SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
    AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
        AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Statement serving as invoice with flight details=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be of '''Integer''' value type. &lt;br /&gt;
*Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
(&lt;br /&gt;
	SELECT CONCAT(last_name,' ',first_name)&lt;br /&gt;
	FROM person&lt;br /&gt;
	LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
	WHERE flight_pilot.flight_id=flight.id AND flight_pilot.num=0&lt;br /&gt;
&lt;br /&gt;
) AS _tr(LEFT_PLACE),&lt;br /&gt;
(&lt;br /&gt;
	SELECT CONCAT(last_name,' ',first_name)&lt;br /&gt;
	FROM person&lt;br /&gt;
	LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
	WHERE flight_pilot.flight_id=flight.id AND flight_pilot.num=1&lt;br /&gt;
&lt;br /&gt;
) AS _tr(RIGHT_PLACE),&lt;br /&gt;
flight.start_date AS _tr(START_DATE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
(&lt;br /&gt;
	SELECT GROUP_CONCAT( activity_type.name SEPARATOR ', ')&lt;br /&gt;
	FROM flight AS tmp_flight&lt;br /&gt;
	LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
	WHERE tmp_flight.id=flight.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
SUM(account_entry.debit)-SUM(account_entry.credit) AS _tr(AMOUNT),&lt;br /&gt;
business_field_content.content AS _tr(COMMENT)&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN business_field_content ON business_field_content.category_id=flight.id&lt;br /&gt;
LEFT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
AND business_field.variable='activityComment'&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY flight.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Supplier bill=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM supplier_bill ORDER BY bill_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Total of debits, credits, balances of each account at the 12/31=&lt;br /&gt;
Required additional field:&lt;br /&gt;
*$year Year type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id, export_account, name, @debit:=sumAccountEntryDebit(id,'$year-12-31 22:59:59') AS Debit, @credit:=sumAccountEntryCredit(id,'$year-12-31 22:59:59') AS Credit, ROUND(@credit-@debit,2) AS solde FROM account WHERE activated=1 ORDER BY export_account&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=User account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbObjectMulti::Profile''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=account_journal&amp;amp;menuParameter=', account.id, ']', account.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    CONCAT( personWithProfile.last_name, ' ', personWithProfile.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    personWithProfile.person_profile AS _tr(PROFILE),&lt;br /&gt;
    account_type.name AS _tr(ACCOUNT_TYPE),&lt;br /&gt;
    IFNULL(sumAccountEntry(account.id,$endDate),0) AS _tr(BALANCE)&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*, GROUP_CONCAT(profile.name ORDER BY profile.name SEPARATOR ', ') AS person_profile&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
    WHERE profile.id IN ($profileId) OR '-' IN ($profileId)&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON personWithProfile.id=account.owner_id &lt;br /&gt;
WHERE account.category=2&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate) )&lt;br /&gt;
  AND CAST(accounting.id AS CHAR) = $accountingId&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
ORDER BY personWithProfile.last_name, personWithProfile.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Validated only or all entries for an account between two dates=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountId''' should be defined first and should be of '''dbObject::Account''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT '' AS _tr(DATE), '' AS _tr(FLOW_NUMBER), '' AS _tr(AFFECTED_ACCOUNTS), _tr(TEXT_BALANCE, $startDate) AS _tr(COMMENTS),&lt;br /&gt;
       IF( (@startBalance := sumValidatedAccountEntry($accountId, $startDate)) &amp;lt; 0, @startBalance, '' ) AS _tr(DEBIT),&lt;br /&gt;
       IF( @startBalance &amp;gt;= 0, @startBalance, '' ) AS _tr(CREDIT)&lt;br /&gt;
UNION&lt;br /&gt;
SELECT account_entry.account_date, account_entry.flow_id, &lt;br /&gt;
       tmp_affected_account.merge_affected_account, &lt;br /&gt;
       IF(&lt;br /&gt;
            flight.id,&lt;br /&gt;
            tmp_activity_comment.content,&lt;br /&gt;
            IF(&lt;br /&gt;
                account_entry.payment_type,&lt;br /&gt;
                CONCAT( payment_type.name, IF( account_entry.payment_description IS NOT NULL, CONCAT(' (', account_entry.payment_description, ')'), '' ) ),&lt;br /&gt;
                account_entry.comments&lt;br /&gt;
            )&lt;br /&gt;
       ) AS comments,&lt;br /&gt;
       account_entry.debit,&lt;br /&gt;
       account_entry.credit&lt;br /&gt;
FROM account_entry&lt;br /&gt;
LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
LEFT JOIN account_type ON (account_type.id=account.account_type)&lt;br /&gt;
LEFT JOIN flight_account_entry ON (flight_account_entry.account_entry_id=account_entry.flow_id)&lt;br /&gt;
LEFT JOIN flight ON (flight.id=flight_account_entry.flight_id)&lt;br /&gt;
LEFT JOIN payment_type ON (payment_type.id=account_entry.payment_type)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT account_entry.id,&lt;br /&gt;
           GROUP_CONCAT( IFNULL( affected_account.name, '' ), IF( affected_account_type.name IS NOT NULL, CONCAT(' (', affected_account_type.name, ')'), '' ) ) AS merge_affected_account&lt;br /&gt;
    FROM account_entry&lt;br /&gt;
    LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
    LEFT JOIN account_entry AS affected_account_entry ON (affected_account_entry.flow_id=account_entry.flow_id)&lt;br /&gt;
    LEFT JOIN account AS affected_account ON (affected_account.id=affected_account_entry.account_id)&lt;br /&gt;
    LEFT JOIN account_type AS affected_account_type ON (affected_account_type.id=affected_account.account_type)&lt;br /&gt;
    WHERE account_entry.account_id=$accountId&lt;br /&gt;
      AND account_entry.account_date&amp;gt;=$startDate AND account_entry.account_date&amp;lt;$endDate&lt;br /&gt;
      AND  (account_entry.validated=1 OR $validatedOnly=0)&lt;br /&gt;
      AND account.id &amp;lt;&amp;gt; affected_account.id&lt;br /&gt;
    GROUP BY account_entry.id&lt;br /&gt;
    ORDER BY account_entry.account_date, account_entry.flow_id, account_entry.product_id&lt;br /&gt;
) AS tmp_affected_account ON (tmp_affected_account.id=account_entry.id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT category_id, business_field_content.content&lt;br /&gt;
    FROM business_field_content&lt;br /&gt;
    LEFT JOIN business_field ON business_field.id=business_field_content.business_field_id&lt;br /&gt;
    WHERE business_field.variable='activityComment'&lt;br /&gt;
) AS tmp_activity_comment ON (flight.id=tmp_activity_comment.category_id)&lt;br /&gt;
WHERE tmp_affected_account.id IS NOT NULL&lt;br /&gt;
GROUP BY account_entry.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT '_', '', '', _tr(TEXT_BALANCE, $endDate),&lt;br /&gt;
       IF( (@endBalance := sumValidatedAccountEntry($accountId, $endDate)) &amp;lt; 0, @endBalance, '' ),&lt;br /&gt;
       IF( @endBalance &amp;gt;= 0, @endBalance, '' )&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Accounting-exports&amp;diff=377</id>
		<title>Accounting exports</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Accounting-exports&amp;diff=377"/>
		<updated>2025-03-04T15:21:33Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Statement serving as invoice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
This page lists SQL requests for OpenFlyers release 4 export about Accounting.&lt;br /&gt;
&lt;br /&gt;
=Balances of resource accounts=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT IFNULL(CONCAT(&lt;br /&gt;
    'SELECT resource.name \'_tr(NAME)\',',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            ' (SELECT sumAccountEntry(account.id, '$endDate') AS balance&lt;br /&gt;
               FROM account&lt;br /&gt;
               LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
               WHERE account_type.activated=1&lt;br /&gt;
                 AND account.category=3&lt;br /&gt;
                 AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= '$endDate') )&lt;br /&gt;
                 AND account.owner_id=resource.id&lt;br /&gt;
                 AND account.account_type=',&lt;br /&gt;
            account_type.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(account_type.name, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', (SELECT SUM(sumAccountEntry(account.id, '$endDate')) AS balance&lt;br /&gt;
       FROM account&lt;br /&gt;
       LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
       WHERE account_type.activated=1&lt;br /&gt;
         AND account.category=3&lt;br /&gt;
         AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= '$endDate') )&lt;br /&gt;
         AND account.owner_id=resource.id&lt;br /&gt;
       GROUP BY account.owner_id&lt;br /&gt;
    ) AS \'_tr(TOTAL)\'&lt;br /&gt;
    FROM resource WHERE resource.physical=1 AND resource.activated=1 GROUP BY resource.id'&lt;br /&gt;
), 'SELECT \'\'')&lt;br /&gt;
FROM account_type&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account_type.accounting_id&lt;br /&gt;
WHERE account_type.category=3&lt;br /&gt;
  AND account_type.activated=1&lt;br /&gt;
  AND accounting.id=$accountingId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Breakdown by resource accounts of customer invoices=&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT customer_bill_entry.bill_date  AS _tr(DATE),&lt;br /&gt;
	CONCAT(resource_account_type.name, ' - ', resource_account.name) AS _tr(RESOURCE_ACCOUNT),&lt;br /&gt;
    product.label AS _tr(PRODUCT),&lt;br /&gt;
    customer_bill_entry.debit AS _tr(DEBIT),&lt;br /&gt;
    customer_bill_entry.credit AS _tr(CREDIT),&lt;br /&gt;
    CONCAT(person_account_type.name, ' - ', person.last_name, ' ', IFNULL(person.first_name, '')) AS  _tr(ACCOUNT_MEMBER_ACCOUNT)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN person ON person.id = customer_bill_entry.owner_id AND customer_bill_entry.owner_category = 2&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN account_entry AS person_account_entry ON person_account_entry.id = customer_bill_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account AS person_account ON person_account.id = person_account_entry.account_id&lt;br /&gt;
LEFT JOIN account_type AS person_account_type ON person_account_type.id = person_account.account_type&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN product ON product.id = customer_bill_entry.product_id&lt;br /&gt;
 &lt;br /&gt;
INNER JOIN account_entry AS resource_account_entry ON resource_account_entry.flow_id = customer_bill_entry.account_entry_flow_id&lt;br /&gt;
INNER JOIN account AS resource_account ON resource_account.id = resource_account_entry.account_id AND resource_account.category = 3&lt;br /&gt;
LEFT JOIN account_type AS resource_account_type ON resource_account_type.id = resource_account.account_type&lt;br /&gt;
 &lt;br /&gt;
WHERE bill_date &amp;gt;= $startDate AND bill_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY bill_date;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Carry forwards=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF (account.category = 2, CONCAT(person.last_name,'  &lt;br /&gt;
',IFNULL(person.first_name, ''),' (',account_type.name,')'),&lt;br /&gt;
    IF (account.category = 3,CONCAT(resource.name,'  &lt;br /&gt;
(',account_type.name,')'),account.name)) AS Nom,&lt;br /&gt;
    export_account AS Code_comptable,&lt;br /&gt;
    debit AS 'Debit',&lt;br /&gt;
    credit AS 'Credit'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN balance ON balance.account_id=account.id&lt;br /&gt;
LEFT JOIN person ON person.id=account.owner_id AND account.category = 2&lt;br /&gt;
LEFT JOIN resource ON resource.id=account.owner_id AND account.category = 3&lt;br /&gt;
LEFT JOIN account_type ON account_type.id=account.account_type&lt;br /&gt;
WHERE account.activated = 1&lt;br /&gt;
  AND balance.balance_date_id = (SELECT balance_date.id FROM balance_date ORDER BY balance_date.id DESC LIMIT 1)&lt;br /&gt;
  AND accounting.id=$accountingId&lt;br /&gt;
  AND (&lt;br /&gt;
      (person.id IS NULL AND resource.id IS NULL)&lt;br /&gt;
      OR&lt;br /&gt;
      (person.activated=1 AND account.category=2)&lt;br /&gt;
      OR&lt;br /&gt;
      (resource.activated=1 AND account.category=3)&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY Nom ASC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Category account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CASE&lt;br /&gt;
        WHEN account.category=1 THEN _tr(OTHER_ACCOUNT)&lt;br /&gt;
        WHEN account_type.name IS NOT NULL AND (account.category=2) THEN CONCAT(_tr(MEMBER_ACCOUNT), ' - ', account_type.name)&lt;br /&gt;
        WHEN account_type.name IS NOT NULL AND (account.category=3) THEN CONCAT(_tr(RESOURCE_ACCOUNT), ' - ', account_type.name)&lt;br /&gt;
        WHEN account.category=4 THEN _tr(SUPPLIER_ACCOUNT)&lt;br /&gt;
        WHEN account.category=6 THEN _tr(ACCOUNT_VAT_ACCOUNT)&lt;br /&gt;
        WHEN account.category=7 THEN _tr(ACCOUNT_EXPENSE_ACCOUNT)&lt;br /&gt;
        WHEN account.category=8 THEN _tr(TREASURY_ACCOUNT)&lt;br /&gt;
        WHEN account.category=9 THEN _tr(PRODUCT_ACCOUNT)&lt;br /&gt;
        WHEN account.category=10 THEN _tr(BALANCE_SHEET_ACCOUNT)&lt;br /&gt;
        WHEN account.category=11 THEN _tr(CUSTOMER_ACCOUNT)&lt;br /&gt;
        ELSE account.name&lt;br /&gt;
    END AS _tr(ACCOUNT_TYPE),&lt;br /&gt;
    IFNULL(SUM( sumAccountEntry(account.id,NOW())),0) AS _tr(ACCOUNT_BALANCE)&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN account_type ON (account.account_type = account_type.id AND account.category IN(2,3))&lt;br /&gt;
LEFT JOIN person ON (account.owner_id = person.id AND account.category=2)&lt;br /&gt;
LEFT JOIN resource ON (account.owner_id = resource.id AND account.category=3)&lt;br /&gt;
WHERE account.activated = 1&lt;br /&gt;
  AND accounting.id=$accountingId&lt;br /&gt;
  AND (&lt;br /&gt;
      (person.id IS NULL AND resource.id IS NULL)&lt;br /&gt;
      OR&lt;br /&gt;
      (person.activated=1 AND account.category=2)&lt;br /&gt;
      OR&lt;br /&gt;
      (resource.activated=1 AND account.category=3)&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY account.category&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Cheque deposit slip=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT date_format(ae.registration_date, &amp;quot;%d/%m/%Y&amp;quot;) as &amp;quot;date&amp;quot;, a.name, formatDecimal(ae.credit) as montant, ae.payment_description as libelle, &lt;br /&gt;
(SELECT a2.name FROM account_entry ae2 JOIN account a2 ON a2.id = ae2.account_id WHERE ae2.flow_id = ae.flow_id AND ae2.debit &amp;gt; 0 LIMIT 0,1) as compte_banque, ae.comments as commentaire&lt;br /&gt;
FROM account_entry ae&lt;br /&gt;
JOIN account a&lt;br /&gt;
  ON ae.account_id = a.id&lt;br /&gt;
WHERE a.account_type = 1&lt;br /&gt;
  AND ae.validated = 1&lt;br /&gt;
  AND ae.credit &amp;gt; 0&lt;br /&gt;
ORDER BY ae.registration_date DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Customer bill between date=&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT customer_bill_entry.bill_date AS _tr(DATE), CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=download_customer_bill&amp;amp;menuParameter=', customer_bill_entry.flow_id, ']', customer_bill_entry.customer_bill_id, '[/LINK]' ) AS _tr(BILL)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
WHERE customer_bill_entry.bill_date &amp;gt;= $startDate AND customer_bill_entry.bill_date &amp;lt; $endDate&lt;br /&gt;
GROUP BY customer_bill_entry.customer_bill_id&lt;br /&gt;
ORDER BY customer_bill_entry.customer_bill_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Customer bill per month and per accounting=&lt;br /&gt;
* Variable '''$accountingId''' should be defined first and should be of '''dbOject::Accounting''' value type.&lt;br /&gt;
* Variable '''$month''' should be defined first and should be of '''Month''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.name AS _tr(CUSTOMER), resource_type.name AS _tr(RESOURCE), product.label AS _tr(PRODUCT), SUM(customer_bill_entry.qty) AS _tr(QUANTITY), SUM(customer_bill_entry.debit) AS _tr(AMOUNT)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
LEFT JOIN account_entry ON (account_entry.flow_id=customer_bill_entry.account_entry_flow_id AND account_entry.id=customer_bill_entry.account_entry_id)&lt;br /&gt;
LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
LEFT JOIN accounting ON (accounting.id=account.accounting_id)&lt;br /&gt;
LEFT JOIN product ON (product.id=customer_bill_entry.product_id)&lt;br /&gt;
LEFT JOIN flight_account_entry ON (account_entry.flow_id=flight_account_entry.account_entry_id)&lt;br /&gt;
LEFT JOIN flight ON (flight.id=flight_account_entry.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
WHERE account.category = 2&lt;br /&gt;
  AND accounting.id = $accountingId&lt;br /&gt;
  AND YEAR(account_entry.account_date) = $year&lt;br /&gt;
  AND MONTH(account_entry.account_date) = $month&lt;br /&gt;
GROUP BY account.id, resource_type.id, product.id&lt;br /&gt;
ORDER BY account.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Get the details (specially the id) of an account according its name=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `account` WHERE `name` LIKE 'account name to search'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Get the user owner of an account=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM person RIGHT JOIN account ON person.id=account.owner_id WHERE account.id=114&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global account balance=&lt;br /&gt;
List whole account balance at the end of a given date :&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.id, export_account, account.name,&lt;br /&gt;
IFNULL(sumAccountEntry(account.id, $endDate), 0) AS solde&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON (accounting.id=account.accounting_id)&lt;br /&gt;
LEFT JOIN person ON (person.id=account.owner_id AND account.category=2)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=account.owner_id AND account.category=3)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate) )&lt;br /&gt;
ORDER BY 2, 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global account balance last subscription=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$validityTypeId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name, ' ', first_name) AS _tr(FULL_NAME),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY),&lt;br /&gt;
    grant_date AS _tr(VALIDITY_GRANT_DATE),&lt;br /&gt;
    IFNULL((&lt;br /&gt;
        SELECT SUM(account_entry.credit) - SUM(account_entry.debit)&lt;br /&gt;
        FROM account_entry &lt;br /&gt;
        WHERE account_entry.account_id = account.id&lt;br /&gt;
          AND account_entry.account_date &amp;gt; (&lt;br /&gt;
              SELECT balance_date &lt;br /&gt;
              FROM balance_date&lt;br /&gt;
              ORDER BY balance_date DESC&lt;br /&gt;
              LIMIT 1&lt;br /&gt;
          )), 0&lt;br /&gt;
    ) + balance.credit - balance.debit AS Total&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON validity.person_id = person.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id = validity.validity_type_id&lt;br /&gt;
LEFT JOIN account ON account.owner_id = person.id AND account.category = 2&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN balance ON balance.account_id = account.id&lt;br /&gt;
  AND balance.balance_date_id = (&lt;br /&gt;
      SELECT id&lt;br /&gt;
      FROM balance_date&lt;br /&gt;
      ORDER BY balance_date ASC&lt;br /&gt;
      LIMIT 1&lt;br /&gt;
  )&lt;br /&gt;
WHERE grant_date &amp;lt; DATE_SUB(NOW(), INTERVAL 2 YEAR)&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND CAST(accounting.id AS CHAR) =$accountingId&lt;br /&gt;
  AND account.activated = 1&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global non null account balance=&lt;br /&gt;
*List whole account balance at the end of a given date but for only non null account balance&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
    CONCAT( \'[LINK=index.php?menuAction=account_journal&amp;amp;menuParameter=\', accountsSum.account_id, \']\', accountsSum.account_id, \'[/LINK]\' ) AS _tr(ID),&lt;br /&gt;
    accountLayout.export_account AS _tr(ACCOUNT_EXPORT), &lt;br /&gt;
	CASE&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=2 THEN CONCAT(_tr(MEMBER_ACCOUNT), \' \', account_type.name,  \' \', _tr(REPORTS_OF), \' \', person.last_name, \' \', IFNULL(person.first_name, \'\'))&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=3 THEN CONCAT(_tr(AIRCRAFT_ACCOUNT), \' \', account_type.name, \' \', _tr(REPORTS_OF), \' \', resource.name)&lt;br /&gt;
			WHEN accountLayout.category=1 THEN CONCAT(_tr(OTHER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=4 THEN CONCAT(_tr(SUPPLIER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=6 THEN CONCAT(_tr(VAT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=7 THEN CONCAT(_tr(EXPENSE_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=8 THEN CONCAT(_tr(TREASURY_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=9 THEN CONCAT(_tr(PRODUCT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=10 THEN CONCAT(_tr(BALANCE_SHEET_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=11 THEN CONCAT(_tr(CUSTOMER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			ELSE accountLayout.name&lt;br /&gt;
	END AS _tr(ACCOUNT),&lt;br /&gt;
	accountsSum.SOLDE AS _tr(ACCOUNT_BALANCE)&lt;br /&gt;
	FROM (&lt;br /&gt;
		SELECT accountEntriesExtract.account_id,&lt;br /&gt;
		(IFNULL(SUM(accountEntriesExtract.credit), 0.00)  - IFNULL(SUM(accountEntriesExtract.debit), 0.00) ) AS SOLDE&lt;br /&gt;
		FROM (&lt;br /&gt;
			(SELECT account_entry.account_id,&lt;br /&gt;
			IFNULL(account_entry.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(account_entry.credit, 0.00) AS credit&lt;br /&gt;
			FROM account_entry&lt;br /&gt;
			INNER JOIN account ON (account.id = account_entry.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
			WHERE account_date &amp;gt;= \'', balance_date.balance_date ,'\' AND account_date &amp;lt; $endDate&lt;br /&gt;
			)&lt;br /&gt;
			UNION ALL&lt;br /&gt;
			(&lt;br /&gt;
			SELECT &lt;br /&gt;
			account_id,&lt;br /&gt;
			IFNULL(balance.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(balance.credit, 0.00) AS credit&lt;br /&gt;
			FROM balance&lt;br /&gt;
			INNER JOIN account ON (account.id = balance.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
			WHERE balance_date_id = ',  balance_date.id, '&lt;br /&gt;
			)&lt;br /&gt;
		) AS accountEntriesExtract&lt;br /&gt;
		GROUP BY accountEntriesExtract.account_id&lt;br /&gt;
        HAVING SOLDE NOT IN (\'0 \', \'0.00\', \'0,00\')&lt;br /&gt;
	) AS accountsSum&lt;br /&gt;
	INNER JOIN account accountLayout ON (accountLayout.id = accountsSum.account_id AND accountLayout.accounting_id=$accountingId AND (accountLayout.activated = 1 OR (accountLayout.activated=0 AND accountLayout.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
	LEFT JOIN account_type ON (accountLayout.account_type = account_type.id AND accountLayout.category IN(2,3))&lt;br /&gt;
	LEFT JOIN person ON (person.id=accountLayout.owner_id AND accountLayout.category=2) &lt;br /&gt;
	LEFT JOIN resource ON (resource.id=accountLayout.owner_id AND accountLayout.category=3) &lt;br /&gt;
    GROUP BY accountLayout.id &lt;br /&gt;
    ORDER BY accountLayout.export_account ASC&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM balance_date&lt;br /&gt;
WHERE balance_date.balance_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY balance_date DESC&lt;br /&gt;
LIMIT 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=List of all account debit, credit=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT accountLayout.export_account AS _tr(ACCOUNT_EXPORT), &lt;br /&gt;
	CASE&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=2 THEN CONCAT(_tr(MEMBER_ACCOUNT), \' \', account_type.name,  \' \', _tr(REPORTS_OF), \' \', person.last_name, \' \', IFNULL(person.first_name, \'\'))&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=3 THEN CONCAT(_tr(AIRCRAFT_ACCOUNT), \' \', account_type.name, \' \', _tr(REPORTS_OF), \' \', resource.name)&lt;br /&gt;
			WHEN accountLayout.category=1 THEN CONCAT(_tr(OTHER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=4 THEN CONCAT(_tr(SUPPLIER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=6 THEN CONCAT(_tr(VAT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=7 THEN CONCAT(_tr(EXPENSE_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=8 THEN CONCAT(_tr(TREASURY_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=9 THEN CONCAT(_tr(PRODUCT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=10 THEN CONCAT(_tr(BALANCE_SHEET_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=11 THEN CONCAT(_tr(CUSTOMER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			ELSE accountLayout.name&lt;br /&gt;
	END AS _tr(ACCOUNT),&lt;br /&gt;
	IF((@sumAccountEntry := (accountsSum.CREDIT - accountsSum.DEBIT)) &amp;lt; 0, @sumAccountEntry, 0) AS _tr(DEBIT),&lt;br /&gt;
	IF(@sumAccountEntry &amp;lt; 0, 0, @sumAccountEntry) AS _tr(CREDIT)&lt;br /&gt;
	FROM (&lt;br /&gt;
		SELECT accountEntriesExtract.account_id,&lt;br /&gt;
		IFNULL(SUM(accountEntriesExtract.debit), 0.00) AS DEBIT,&lt;br /&gt;
		IFNULL(SUM(accountEntriesExtract.credit), 0.00) AS CREDIT&lt;br /&gt;
		FROM (&lt;br /&gt;
			(SELECT account_entry.account_id,&lt;br /&gt;
			IFNULL(account_entry.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(account_entry.credit, 0.00) AS credit&lt;br /&gt;
			FROM account_entry&lt;br /&gt;
			INNER JOIN account ON (account.id = account_entry.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
			WHERE account_date &amp;gt;= \'', balance_date.balance_date ,'\' AND account_date &amp;lt; $endDate&lt;br /&gt;
			)&lt;br /&gt;
			UNION ALL&lt;br /&gt;
			(&lt;br /&gt;
			SELECT &lt;br /&gt;
			account_id,&lt;br /&gt;
			IFNULL(balance.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(balance.credit, 0.00) AS credit&lt;br /&gt;
			FROM balance&lt;br /&gt;
			INNER JOIN account ON (account.id = balance.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
			WHERE balance_date_id = ',  balance_date.id, '&lt;br /&gt;
			)&lt;br /&gt;
		) AS accountEntriesExtract&lt;br /&gt;
		GROUP BY accountEntriesExtract.account_id&lt;br /&gt;
	) AS accountsSum&lt;br /&gt;
	INNER JOIN account accountLayout ON (accountLayout.id = accountsSum.account_id AND accountLayout.accounting_id=$accountingId AND (accountLayout.activated = 1 OR (accountLayout.activated=0 AND accountLayout.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
	LEFT JOIN account_type ON (accountLayout.account_type = account_type.id AND accountLayout.category IN(2,3))&lt;br /&gt;
	LEFT JOIN person ON (person.id=accountLayout.owner_id AND accountLayout.category=2) &lt;br /&gt;
	LEFT JOIN resource ON (resource.id=accountLayout.owner_id AND accountLayout.category=3) &lt;br /&gt;
    GROUP BY accountLayout.id &lt;br /&gt;
    ORDER BY accountLayout.export_account ASC&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM balance_date&lt;br /&gt;
WHERE balance_date.balance_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY balance_date DESC&lt;br /&gt;
LIMIT 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Monthly distribution of revenue=&lt;br /&gt;
*In [http://fr.wikipedia.org/wiki/Plan_comptable_g%C3%A9n%C3%A9ral_%28France%29#Cadre_comptable french accounting], this query reports each month's revenue distribution. It only concerns [http://doc-fr.openflyers.com/index.php?title=Account#Comptes_de_produits product accounts] (prefixed 7xx) except those that are prefixed 709xxx&lt;br /&gt;
*Additional field $year is needed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account_name,&lt;br /&gt;
    ( IF(febSum&amp;lt;0, febSum, 0) - IF(janSum&amp;lt;0, janSum, 0) + IF(febSum&amp;lt;0, 0, febSum) - IF(janSum&amp;lt;0, 0, janSum) ) AS Janu,&lt;br /&gt;
    ( IF(marSum&amp;lt;0, marSum, 0) - IF(febSum&amp;lt;0, febSum, 0) + IF(marSum&amp;lt;0, 0, marSum) - IF(febSum&amp;lt;0, 0, febSum) ) AS Febr,&lt;br /&gt;
    ( IF(aprSum&amp;lt;0, aprSum, 0) - IF(marSum&amp;lt;0, marSum, 0) + IF(aprSum&amp;lt;0, 0, aprSum) - IF(marSum&amp;lt;0, 0, marSum) ) AS Marc,&lt;br /&gt;
    ( IF(maySum&amp;lt;0, maySum, 0) - IF(aprSum&amp;lt;0, aprSum, 0) + IF(maySum&amp;lt;0, 0, maySum) - IF(aprSum&amp;lt;0, 0, aprSum) ) AS April,&lt;br /&gt;
    ( IF(junSum&amp;lt;0, junSum, 0) - IF(maySum&amp;lt;0, maySum, 0) + IF(junSum&amp;lt;0, 0, junSum) - IF(maySum&amp;lt;0, 0, maySum) ) AS May,&lt;br /&gt;
    ( IF(julSum&amp;lt;0, julSum, 0) - IF(junSum&amp;lt;0, junSum, 0) + IF(julSum&amp;lt;0, 0, julSum) - IF(junSum&amp;lt;0, 0, junSum) ) AS June,&lt;br /&gt;
    ( IF(augSum&amp;lt;0, augSum, 0) - IF(julSum&amp;lt;0, julSum, 0) + IF(augSum&amp;lt;0, 0, augSum) - IF(julSum&amp;lt;0, 0, julSum) ) AS July,&lt;br /&gt;
    ( IF(sepSum&amp;lt;0, sepSum, 0) - IF(augSum&amp;lt;0, augSum, 0) + IF(sepSum&amp;lt;0, 0, sepSum) - IF(augSum&amp;lt;0, 0, augSum) ) AS Augu,&lt;br /&gt;
    ( IF(octSum&amp;lt;0, octSum, 0) - IF(sepSum&amp;lt;0, sepSum, 0) + IF(octSum&amp;lt;0, 0, octSum) - IF(sepSum&amp;lt;0, 0, sepSum) ) AS Sept,&lt;br /&gt;
    ( IF(novSum&amp;lt;0, novSum, 0) - IF(octSum&amp;lt;0, octSum, 0) + IF(novSum&amp;lt;0, 0, novSum) - IF(octSum&amp;lt;0, 0, octSum) ) AS Octo,&lt;br /&gt;
    ( IF(decSum&amp;lt;0, decSum, 0) - IF(novSum&amp;lt;0, novSum, 0) + IF(decSum&amp;lt;0, 0, decSum) - IF(novSum&amp;lt;0, 0, novSum) ) AS Nove,&lt;br /&gt;
    ( IF(nextJanSum&amp;lt;0, nextJanSum, 0) - IF(decSum&amp;lt;0, decSum, 0) + IF(nextJanSum&amp;lt;0, 0, nextJanSum) - IF(decSum&amp;lt;0, 0, decSum) ) AS Dece&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT IF(account.category=3, CONCAT(account.name, ' - ', account_type.name), account.name) AS 'account_name',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-01-01') AS 'janSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-02-01') AS 'febSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-03-01') AS 'marSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-04-01') AS 'aprSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-05-01') AS 'maySum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-06-01') AS 'junSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-07-01') AS 'julSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-08-01') AS 'augSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-09-01') AS 'sepSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-10-01') AS 'octSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-11-01') AS 'novSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-12-01') AS 'decSum',&lt;br /&gt;
    sumAccountEntry(account.id, DATE_ADD('$year-01-01', INTERVAL 12 MONTH)) AS 'nextJanSum'&lt;br /&gt;
    FROM account&lt;br /&gt;
    LEFT JOIN account_type ON (account_type.id = account.account_type)&lt;br /&gt;
    WHERE account.export_account LIKE '7%' AND account.export_account NOT LIKE '709%' AND account.activated=1&lt;br /&gt;
) AS sumAccountEntryForAccount&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Movements total per account between two dates=&lt;br /&gt;
* Variable '''$accountingId''' should be defined first and should be of '''dbOject::Accounting''' value type&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date/Date and time''' value type&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.id, export_account, account.name, IFNULL( SUM(account_entry.credit) - SUM(account_entry.debit), 0 ) AS 'Total'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN account_entry ON (account.id=account_entry.account_id)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date &amp;lt; $endDate&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $startDate) )&lt;br /&gt;
GROUP BY account.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT '', '_', 'Total', IFNULL( SUM(account_entry.credit) - SUM(account_entry.debit), 0 ) AS 'Solde'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN account_entry ON (account.id=account_entry.account_id)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date &amp;lt; $endDate&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $startDate) )&lt;br /&gt;
ORDER BY 2, 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Non balanced flow=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flow_id, SUM(debit) AS totalDebit, SUM(credit) AS totalCredit&lt;br /&gt;
FROM account_entry&lt;br /&gt;
GROUP BY flow_id&lt;br /&gt;
HAVING totalDebit &amp;lt;&amp;gt; totalCredit&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Online payment attempts list=&lt;br /&gt;
Required additional field:&lt;br /&gt;
*$endDate Date type&lt;br /&gt;
*$startDate Date type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT psp_transaction.transaction_date, account.name, psp_transaction.amount, psp_transaction.state FROM psp_transaction&lt;br /&gt;
LEFT JOIN account ON account.id=psp_transaction.credit_account_id&lt;br /&gt;
WHERE psp_transaction.transaction_date &amp;gt;= $startDate AND psp_transaction.transaction_date&amp;lt;=$endDate&lt;br /&gt;
ORDER BY psp_transaction.transaction_date DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Payment dispatching=&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT payment_type AS Num, payment_type.name AS name,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 1 AND payment_type = Num) AS Janu,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 2 AND payment_type = Num) AS Febr,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 3 AND payment_type = Num) AS Marc,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 4 AND payment_type = Num) AS Apri,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 5 AND payment_type = Num) AS May,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 6 AND payment_type = Num) AS June,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 7 AND payment_type = Num) AS July,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 8 AND payment_type = Num) AS Augu,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 9 AND payment_type = Num) AS Sept,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 10 AND payment_type = Num) AS Octo,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 11 AND payment_type = Num) AS Nove,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 12 AND payment_type = Num) AS Dece,&lt;br /&gt;
SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS Total  FROM account_entry LEFT JOIN payment_type ON payment_type = payment_type.id WHERE YEAR( account_date ) = $year AND payment_type IS NOT NULL GROUP BY payment_type UNION SELECT  'Sum per',&lt;br /&gt;
'month',&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 1 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 2 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 3 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 4 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 5 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 6 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 7 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 8 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 9 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 10 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 11 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 12 AND payment_type IS NOT NULL),&lt;br /&gt;
SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS Total FROM account_entry LEFT JOIN payment_type ON payment_type = payment_type.id WHERE YEAR( account_date ) = $year AND payment_type IS NOT NULL&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Payment type=&lt;br /&gt;
Payment types list ordered by type&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of '''Date''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date''' value type.&lt;br /&gt;
*Variable '''$paymentType''' should be defined first and should be of '''dbObject::PaymentType''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT payment_type.name AS _tr(ENCASHMENT_TYPE),&lt;br /&gt;
       IF(account.category = 2, CONCAT( person.last_name, ' ', person.first_name), account.name) AS _tr(NAME), &lt;br /&gt;
       DATE(account_entry.account_date) AS _tr(DATE), &lt;br /&gt;
       account_entry.payment_description AS _tr(DESCRIPTION), account_entry.credit AS _tr(AMOUNT)&lt;br /&gt;
FROM account_entry&lt;br /&gt;
LEFT JOIN payment_type ON payment_type.id = account_entry.payment_type&lt;br /&gt;
LEFT JOIN account ON account.id = account_entry.account_id&lt;br /&gt;
LEFT JOIN person ON person.id = account.owner_id&lt;br /&gt;
WHERE&lt;br /&gt;
    CASE&lt;br /&gt;
        WHEN ($paymentType='') THEN account_entry.payment_type IS NOT NULL&lt;br /&gt;
        ELSE account_entry.payment_type=$paymentType&lt;br /&gt;
    END&lt;br /&gt;
 AND credit &amp;gt; 0 AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date  &amp;lt;= $endDate&lt;br /&gt;
ORDER BY 1, 3, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Resource account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT IFNULL(CONCAT(&lt;br /&gt;
    'SELECT resource.name \'_tr(NAME)\',',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            ' (SELECT sumAccountEntry(account.id, \'$endDate\') AS balance&lt;br /&gt;
               FROM account&lt;br /&gt;
               LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
               WHERE account_type.activated=1&lt;br /&gt;
                 AND account.category=3&lt;br /&gt;
                 AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'$endDate\') )&lt;br /&gt;
                 AND account.owner_id=resource.id&lt;br /&gt;
                 AND account.account_type=',&lt;br /&gt;
            account_type.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(account_type.name, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', (SELECT SUM(sumAccountEntry(account.id, \'$endDate\')) AS balance&lt;br /&gt;
       FROM account&lt;br /&gt;
       LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
       WHERE account_type.activated=1&lt;br /&gt;
         AND account.category=3&lt;br /&gt;
         AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'$endDate\') )&lt;br /&gt;
         AND account.owner_id=resource.id&lt;br /&gt;
       GROUP BY account.owner_id&lt;br /&gt;
    ) AS \'_tr(TOTAL)\'&lt;br /&gt;
    FROM resource WHERE resource.physical=1 AND resource.activated=1 GROUP BY resource.id'&lt;br /&gt;
), 'SELECT \'\'')&lt;br /&gt;
FROM account_type&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account_type.accounting_id&lt;br /&gt;
WHERE account_type.category=3&lt;br /&gt;
  AND account_type.activated=1&lt;br /&gt;
  AND accounting.id='$accountingId'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Statement serving as invoice=&lt;br /&gt;
*Variable '''$startDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be of '''Integer''' value type. &lt;br /&gt;
*Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight_list.duree )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight_list.duree )/600 - FLOOR(SUM( flight_list.duree )/600))*3600),'%i')) AS _tr(COMPLETED_HOURS_NUMBER),&lt;br /&gt;
SUM(flight_list.montant) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM person&lt;br /&gt;
JOIN&lt;br /&gt;
(SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
    AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
        AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Statement serving as invoice with flight details=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be of '''Integer''' value type. &lt;br /&gt;
*Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
(&lt;br /&gt;
	SELECT CONCAT(last_name,' ',first_name)&lt;br /&gt;
	FROM person&lt;br /&gt;
	LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
	WHERE flight_pilot.flight_id=flight.id AND flight_pilot.num=0&lt;br /&gt;
&lt;br /&gt;
) AS _tr(LEFT_PLACE),&lt;br /&gt;
(&lt;br /&gt;
	SELECT CONCAT(last_name,' ',first_name)&lt;br /&gt;
	FROM person&lt;br /&gt;
	LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
	WHERE flight_pilot.flight_id=flight.id AND flight_pilot.num=1&lt;br /&gt;
&lt;br /&gt;
) AS _tr(RIGHT_PLACE),&lt;br /&gt;
flight.start_date AS _tr(START_DATE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
(&lt;br /&gt;
	SELECT GROUP_CONCAT( activity_type.name SEPARATOR ', ')&lt;br /&gt;
	FROM flight AS tmp_flight&lt;br /&gt;
	LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
	WHERE tmp_flight.id=flight.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
SUM(account_entry.debit)-SUM(account_entry.credit) AS _tr(AMOUNT),&lt;br /&gt;
business_field_content.content AS _tr(COMMENT)&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN business_field_content ON business_field_content.category_id=flight.id&lt;br /&gt;
LEFT JOIN business_field ON (business_field.id=business_field_content.business_field_id AND business_field.variable='activityComment')&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
	AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY flight.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Supplier bill=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM supplier_bill ORDER BY bill_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Total of debits, credits, balances of each account at the 12/31=&lt;br /&gt;
Required additional field:&lt;br /&gt;
*$year Year type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id, export_account, name, @debit:=sumAccountEntryDebit(id,'$year-12-31 22:59:59') AS Debit, @credit:=sumAccountEntryCredit(id,'$year-12-31 22:59:59') AS Credit, ROUND(@credit-@debit,2) AS solde FROM account WHERE activated=1 ORDER BY export_account&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=User account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbObjectMulti::Profile''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=account_journal&amp;amp;menuParameter=', account.id, ']', account.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    CONCAT( personWithProfile.last_name, ' ', personWithProfile.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    personWithProfile.person_profile AS _tr(PROFILE),&lt;br /&gt;
    account_type.name AS _tr(ACCOUNT_TYPE),&lt;br /&gt;
    IFNULL(sumAccountEntry(account.id,$endDate),0) AS _tr(BALANCE)&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*, GROUP_CONCAT(profile.name ORDER BY profile.name SEPARATOR ', ') AS person_profile&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
    WHERE profile.id IN ($profileId) OR '-' IN ($profileId)&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON personWithProfile.id=account.owner_id &lt;br /&gt;
WHERE account.category=2&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate) )&lt;br /&gt;
  AND CAST(accounting.id AS CHAR) = $accountingId&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
ORDER BY personWithProfile.last_name, personWithProfile.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Validated only or all entries for an account between two dates=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountId''' should be defined first and should be of '''dbObject::Account''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT '' AS _tr(DATE), '' AS _tr(FLOW_NUMBER), '' AS _tr(AFFECTED_ACCOUNTS), _tr(TEXT_BALANCE, $startDate) AS _tr(COMMENTS),&lt;br /&gt;
       IF( (@startBalance := sumValidatedAccountEntry($accountId, $startDate)) &amp;lt; 0, @startBalance, '' ) AS _tr(DEBIT),&lt;br /&gt;
       IF( @startBalance &amp;gt;= 0, @startBalance, '' ) AS _tr(CREDIT)&lt;br /&gt;
UNION&lt;br /&gt;
SELECT account_entry.account_date, account_entry.flow_id, &lt;br /&gt;
       tmp_affected_account.merge_affected_account, &lt;br /&gt;
       IF(&lt;br /&gt;
            flight.id,&lt;br /&gt;
            tmp_activity_comment.content,&lt;br /&gt;
            IF(&lt;br /&gt;
                account_entry.payment_type,&lt;br /&gt;
                CONCAT( payment_type.name, IF( account_entry.payment_description IS NOT NULL, CONCAT(' (', account_entry.payment_description, ')'), '' ) ),&lt;br /&gt;
                account_entry.comments&lt;br /&gt;
            )&lt;br /&gt;
       ) AS comments,&lt;br /&gt;
       account_entry.debit,&lt;br /&gt;
       account_entry.credit&lt;br /&gt;
FROM account_entry&lt;br /&gt;
LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
LEFT JOIN account_type ON (account_type.id=account.account_type)&lt;br /&gt;
LEFT JOIN flight_account_entry ON (flight_account_entry.account_entry_id=account_entry.flow_id)&lt;br /&gt;
LEFT JOIN flight ON (flight.id=flight_account_entry.flight_id)&lt;br /&gt;
LEFT JOIN payment_type ON (payment_type.id=account_entry.payment_type)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT account_entry.id,&lt;br /&gt;
           GROUP_CONCAT( IFNULL( affected_account.name, '' ), IF( affected_account_type.name IS NOT NULL, CONCAT(' (', affected_account_type.name, ')'), '' ) ) AS merge_affected_account&lt;br /&gt;
    FROM account_entry&lt;br /&gt;
    LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
    LEFT JOIN account_entry AS affected_account_entry ON (affected_account_entry.flow_id=account_entry.flow_id)&lt;br /&gt;
    LEFT JOIN account AS affected_account ON (affected_account.id=affected_account_entry.account_id)&lt;br /&gt;
    LEFT JOIN account_type AS affected_account_type ON (affected_account_type.id=affected_account.account_type)&lt;br /&gt;
    WHERE account_entry.account_id=$accountId&lt;br /&gt;
      AND account_entry.account_date&amp;gt;=$startDate AND account_entry.account_date&amp;lt;$endDate&lt;br /&gt;
      AND  (account_entry.validated=1 OR $validatedOnly=0)&lt;br /&gt;
      AND account.id &amp;lt;&amp;gt; affected_account.id&lt;br /&gt;
    GROUP BY account_entry.id&lt;br /&gt;
    ORDER BY account_entry.account_date, account_entry.flow_id, account_entry.product_id&lt;br /&gt;
) AS tmp_affected_account ON (tmp_affected_account.id=account_entry.id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT category_id, business_field_content.content&lt;br /&gt;
    FROM business_field_content&lt;br /&gt;
    LEFT JOIN business_field ON business_field.id=business_field_content.business_field_id&lt;br /&gt;
    WHERE business_field.variable='activityComment'&lt;br /&gt;
) AS tmp_activity_comment ON (flight.id=tmp_activity_comment.category_id)&lt;br /&gt;
WHERE tmp_affected_account.id IS NOT NULL&lt;br /&gt;
GROUP BY account_entry.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT '_', '', '', _tr(TEXT_BALANCE, $endDate),&lt;br /&gt;
       IF( (@endBalance := sumValidatedAccountEntry($accountId, $endDate)) &amp;lt; 0, @endBalance, '' ),&lt;br /&gt;
       IF( @endBalance &amp;gt;= 0, @endBalance, '' )&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=376</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=376"/>
		<updated>2025-02-24T14:24:09Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Cumulated maintenance hours on a period */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or -1) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate,&lt;br /&gt;
_tr(MAINTENANCE_SELECTED_END_DATE_ALERT) COLLATE utf8mb3_general_ci,&lt;br /&gt;
'') AS _tr(RESOURCE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_HOURS),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_DAYS)&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name,&lt;br /&gt;
SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)),&lt;br /&gt;
SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate,&lt;br /&gt;
_tr(MAINTENANCE_SELECTED_END_DATE_ALERT) COLLATE utf8mb3_general_ci,&lt;br /&gt;
'') AS _tr(RESOURCE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_START_DATE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_END_DATE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_HOURS),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_DAYS)&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name,&lt;br /&gt;
booking.start_date,&lt;br /&gt;
booking.end_date,&lt;br /&gt;
TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),&lt;br /&gt;
TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer) represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS _tr(REPORT_MONTH), CONCAT(left_person.last_name, ' ', left_person.first_name) AS _tr(REPORT_FIRST_PLACE_PERSON), activity_type.name AS _tr(ACTIVITY_TYPE), sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS _tr(ACTIVITY_DURATION)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id=$personId)&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            \'S\', &lt;br /&gt;
            \'D\'&lt;br /&gt;
        ) AS _tr(ALONE_DC),&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
        business_field_comment.content AS _tr(COMMENT),&lt;br /&gt;
    ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_BEFORE_ACTIVITY), ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_AFTER_ACTIVITY)'&lt;br /&gt;
        )&lt;br /&gt;
        SEPARATOR ', '&lt;br /&gt;
    ),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON activity_type.id = flight.activity_type_id&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT business_field_content.category_id, business_field_content.content&lt;br /&gt;
        FROM business_field_content&lt;br /&gt;
        LEFT JOIN business_field ON business_field.id = business_field_content.business_field_id&lt;br /&gt;
        WHERE business_field.variable = \'activityComment\'&lt;br /&gt;
    ) AS business_field_comment ON business_field_comment.category_id = flight.id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = ', $year ,' AND flight_pilot.num = 0 AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM tank;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=375</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=375"/>
		<updated>2025-02-24T14:22:14Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Maintenance hours per resource on a period */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or -1) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name AS 'Ressource', SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)), SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate,&lt;br /&gt;
_tr(MAINTENANCE_SELECTED_END_DATE_ALERT) COLLATE utf8mb3_general_ci,&lt;br /&gt;
'') AS _tr(RESOURCE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_START_DATE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_END_DATE),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_HOURS),&lt;br /&gt;
'' AS _tr(MAINTENANCE_DURATION_IN_DAYS)&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name,&lt;br /&gt;
booking.start_date,&lt;br /&gt;
booking.end_date,&lt;br /&gt;
TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),&lt;br /&gt;
TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer) represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS _tr(REPORT_MONTH), CONCAT(left_person.last_name, ' ', left_person.first_name) AS _tr(REPORT_FIRST_PLACE_PERSON), activity_type.name AS _tr(ACTIVITY_TYPE), sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS _tr(ACTIVITY_DURATION)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id=$personId)&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            \'S\', &lt;br /&gt;
            \'D\'&lt;br /&gt;
        ) AS _tr(ALONE_DC),&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
        business_field_comment.content AS _tr(COMMENT),&lt;br /&gt;
    ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_BEFORE_ACTIVITY), ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_AFTER_ACTIVITY)'&lt;br /&gt;
        )&lt;br /&gt;
        SEPARATOR ', '&lt;br /&gt;
    ),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON activity_type.id = flight.activity_type_id&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT business_field_content.category_id, business_field_content.content&lt;br /&gt;
        FROM business_field_content&lt;br /&gt;
        LEFT JOIN business_field ON business_field.id = business_field_content.business_field_id&lt;br /&gt;
        WHERE business_field.variable = \'activityComment\'&lt;br /&gt;
    ) AS business_field_comment ON business_field_comment.category_id = flight.id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = ', $year ,' AND flight_pilot.num = 0 AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM tank;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Accounting-exports&amp;diff=374</id>
		<title>Accounting exports</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Accounting-exports&amp;diff=374"/>
		<updated>2025-02-21T12:48:38Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Statement serving as invoice with flight details */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
This page lists SQL requests for OpenFlyers release 4 export about Accounting.&lt;br /&gt;
&lt;br /&gt;
=Balances of resource accounts=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT IFNULL(CONCAT(&lt;br /&gt;
    'SELECT resource.name \'_tr(NAME)\',',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            ' (SELECT sumAccountEntry(account.id, '$endDate') AS balance&lt;br /&gt;
               FROM account&lt;br /&gt;
               LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
               WHERE account_type.activated=1&lt;br /&gt;
                 AND account.category=3&lt;br /&gt;
                 AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= '$endDate') )&lt;br /&gt;
                 AND account.owner_id=resource.id&lt;br /&gt;
                 AND account.account_type=',&lt;br /&gt;
            account_type.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(account_type.name, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', (SELECT SUM(sumAccountEntry(account.id, '$endDate')) AS balance&lt;br /&gt;
       FROM account&lt;br /&gt;
       LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
       WHERE account_type.activated=1&lt;br /&gt;
         AND account.category=3&lt;br /&gt;
         AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= '$endDate') )&lt;br /&gt;
         AND account.owner_id=resource.id&lt;br /&gt;
       GROUP BY account.owner_id&lt;br /&gt;
    ) AS \'_tr(TOTAL)\'&lt;br /&gt;
    FROM resource WHERE resource.physical=1 AND resource.activated=1 GROUP BY resource.id'&lt;br /&gt;
), 'SELECT \'\'')&lt;br /&gt;
FROM account_type&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account_type.accounting_id&lt;br /&gt;
WHERE account_type.category=3&lt;br /&gt;
  AND account_type.activated=1&lt;br /&gt;
  AND accounting.id=$accountingId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Breakdown by resource accounts of customer invoices=&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT customer_bill_entry.bill_date  AS _tr(DATE),&lt;br /&gt;
	CONCAT(resource_account_type.name, ' - ', resource_account.name) AS _tr(RESOURCE_ACCOUNT),&lt;br /&gt;
    product.label AS _tr(PRODUCT),&lt;br /&gt;
    customer_bill_entry.debit AS _tr(DEBIT),&lt;br /&gt;
    customer_bill_entry.credit AS _tr(CREDIT),&lt;br /&gt;
    CONCAT(person_account_type.name, ' - ', person.last_name, ' ', IFNULL(person.first_name, '')) AS  _tr(ACCOUNT_MEMBER_ACCOUNT)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN person ON person.id = customer_bill_entry.owner_id AND customer_bill_entry.owner_category = 2&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN account_entry AS person_account_entry ON person_account_entry.id = customer_bill_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account AS person_account ON person_account.id = person_account_entry.account_id&lt;br /&gt;
LEFT JOIN account_type AS person_account_type ON person_account_type.id = person_account.account_type&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN product ON product.id = customer_bill_entry.product_id&lt;br /&gt;
 &lt;br /&gt;
INNER JOIN account_entry AS resource_account_entry ON resource_account_entry.flow_id = customer_bill_entry.account_entry_flow_id&lt;br /&gt;
INNER JOIN account AS resource_account ON resource_account.id = resource_account_entry.account_id AND resource_account.category = 3&lt;br /&gt;
LEFT JOIN account_type AS resource_account_type ON resource_account_type.id = resource_account.account_type&lt;br /&gt;
 &lt;br /&gt;
WHERE bill_date &amp;gt;= $startDate AND bill_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY bill_date;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Carry forwards=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF (account.category = 2, CONCAT(person.last_name,'  &lt;br /&gt;
',IFNULL(person.first_name, ''),' (',account_type.name,')'),&lt;br /&gt;
    IF (account.category = 3,CONCAT(resource.name,'  &lt;br /&gt;
(',account_type.name,')'),account.name)) AS Nom,&lt;br /&gt;
    export_account AS Code_comptable,&lt;br /&gt;
    debit AS 'Debit',&lt;br /&gt;
    credit AS 'Credit'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN balance ON balance.account_id=account.id&lt;br /&gt;
LEFT JOIN person ON person.id=account.owner_id AND account.category = 2&lt;br /&gt;
LEFT JOIN resource ON resource.id=account.owner_id AND account.category = 3&lt;br /&gt;
LEFT JOIN account_type ON account_type.id=account.account_type&lt;br /&gt;
WHERE account.activated = 1&lt;br /&gt;
  AND balance.balance_date_id = (SELECT balance_date.id FROM balance_date ORDER BY balance_date.id DESC LIMIT 1)&lt;br /&gt;
  AND accounting.id=$accountingId&lt;br /&gt;
  AND (&lt;br /&gt;
      (person.id IS NULL AND resource.id IS NULL)&lt;br /&gt;
      OR&lt;br /&gt;
      (person.activated=1 AND account.category=2)&lt;br /&gt;
      OR&lt;br /&gt;
      (resource.activated=1 AND account.category=3)&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY Nom ASC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Category account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CASE&lt;br /&gt;
        WHEN account.category=1 THEN _tr(OTHER_ACCOUNT)&lt;br /&gt;
        WHEN account_type.name IS NOT NULL AND (account.category=2) THEN CONCAT(_tr(MEMBER_ACCOUNT), ' - ', account_type.name)&lt;br /&gt;
        WHEN account_type.name IS NOT NULL AND (account.category=3) THEN CONCAT(_tr(RESOURCE_ACCOUNT), ' - ', account_type.name)&lt;br /&gt;
        WHEN account.category=4 THEN _tr(SUPPLIER_ACCOUNT)&lt;br /&gt;
        WHEN account.category=6 THEN _tr(ACCOUNT_VAT_ACCOUNT)&lt;br /&gt;
        WHEN account.category=7 THEN _tr(ACCOUNT_EXPENSE_ACCOUNT)&lt;br /&gt;
        WHEN account.category=8 THEN _tr(TREASURY_ACCOUNT)&lt;br /&gt;
        WHEN account.category=9 THEN _tr(PRODUCT_ACCOUNT)&lt;br /&gt;
        WHEN account.category=10 THEN _tr(BALANCE_SHEET_ACCOUNT)&lt;br /&gt;
        WHEN account.category=11 THEN _tr(CUSTOMER_ACCOUNT)&lt;br /&gt;
        ELSE account.name&lt;br /&gt;
    END AS _tr(ACCOUNT_TYPE),&lt;br /&gt;
    IFNULL(SUM( sumAccountEntry(account.id,NOW())),0) AS _tr(ACCOUNT_BALANCE)&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN account_type ON (account.account_type = account_type.id AND account.category IN(2,3))&lt;br /&gt;
LEFT JOIN person ON (account.owner_id = person.id AND account.category=2)&lt;br /&gt;
LEFT JOIN resource ON (account.owner_id = resource.id AND account.category=3)&lt;br /&gt;
WHERE account.activated = 1&lt;br /&gt;
  AND accounting.id=$accountingId&lt;br /&gt;
  AND (&lt;br /&gt;
      (person.id IS NULL AND resource.id IS NULL)&lt;br /&gt;
      OR&lt;br /&gt;
      (person.activated=1 AND account.category=2)&lt;br /&gt;
      OR&lt;br /&gt;
      (resource.activated=1 AND account.category=3)&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY account.category&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Cheque deposit slip=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT date_format(ae.registration_date, &amp;quot;%d/%m/%Y&amp;quot;) as &amp;quot;date&amp;quot;, a.name, formatDecimal(ae.credit) as montant, ae.payment_description as libelle, &lt;br /&gt;
(SELECT a2.name FROM account_entry ae2 JOIN account a2 ON a2.id = ae2.account_id WHERE ae2.flow_id = ae.flow_id AND ae2.debit &amp;gt; 0 LIMIT 0,1) as compte_banque, ae.comments as commentaire&lt;br /&gt;
FROM account_entry ae&lt;br /&gt;
JOIN account a&lt;br /&gt;
  ON ae.account_id = a.id&lt;br /&gt;
WHERE a.account_type = 1&lt;br /&gt;
  AND ae.validated = 1&lt;br /&gt;
  AND ae.credit &amp;gt; 0&lt;br /&gt;
ORDER BY ae.registration_date DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Customer bill between date=&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT customer_bill_entry.bill_date AS _tr(DATE), CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=download_customer_bill&amp;amp;menuParameter=', customer_bill_entry.flow_id, ']', customer_bill_entry.customer_bill_id, '[/LINK]' ) AS _tr(BILL)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
WHERE customer_bill_entry.bill_date &amp;gt;= $startDate AND customer_bill_entry.bill_date &amp;lt; $endDate&lt;br /&gt;
GROUP BY customer_bill_entry.customer_bill_id&lt;br /&gt;
ORDER BY customer_bill_entry.customer_bill_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Customer bill per month and per accounting=&lt;br /&gt;
* Variable '''$accountingId''' should be defined first and should be of '''dbOject::Accounting''' value type.&lt;br /&gt;
* Variable '''$month''' should be defined first and should be of '''Month''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.name AS _tr(CUSTOMER), resource_type.name AS _tr(RESOURCE), product.label AS _tr(PRODUCT), SUM(customer_bill_entry.qty) AS _tr(QUANTITY), SUM(customer_bill_entry.debit) AS _tr(AMOUNT)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
LEFT JOIN account_entry ON (account_entry.flow_id=customer_bill_entry.account_entry_flow_id AND account_entry.id=customer_bill_entry.account_entry_id)&lt;br /&gt;
LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
LEFT JOIN accounting ON (accounting.id=account.accounting_id)&lt;br /&gt;
LEFT JOIN product ON (product.id=customer_bill_entry.product_id)&lt;br /&gt;
LEFT JOIN flight_account_entry ON (account_entry.flow_id=flight_account_entry.account_entry_id)&lt;br /&gt;
LEFT JOIN flight ON (flight.id=flight_account_entry.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
WHERE account.category = 2&lt;br /&gt;
  AND accounting.id = $accountingId&lt;br /&gt;
  AND YEAR(account_entry.account_date) = $year&lt;br /&gt;
  AND MONTH(account_entry.account_date) = $month&lt;br /&gt;
GROUP BY account.id, resource_type.id, product.id&lt;br /&gt;
ORDER BY account.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Get the details (specially the id) of an account according its name=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `account` WHERE `name` LIKE 'account name to search'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Get the user owner of an account=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM person RIGHT JOIN account ON person.id=account.owner_id WHERE account.id=114&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global account balance=&lt;br /&gt;
List whole account balance at the end of a given date :&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.id, export_account, account.name,&lt;br /&gt;
IFNULL(sumAccountEntry(account.id, $endDate), 0) AS solde&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON (accounting.id=account.accounting_id)&lt;br /&gt;
LEFT JOIN person ON (person.id=account.owner_id AND account.category=2)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=account.owner_id AND account.category=3)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate) )&lt;br /&gt;
ORDER BY 2, 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global account balance last subscription=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$validityTypeId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name, ' ', first_name) AS _tr(FULL_NAME),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY),&lt;br /&gt;
    grant_date AS _tr(VALIDITY_GRANT_DATE),&lt;br /&gt;
    IFNULL((&lt;br /&gt;
        SELECT SUM(account_entry.credit) - SUM(account_entry.debit)&lt;br /&gt;
        FROM account_entry &lt;br /&gt;
        WHERE account_entry.account_id = account.id&lt;br /&gt;
          AND account_entry.account_date &amp;gt; (&lt;br /&gt;
              SELECT balance_date &lt;br /&gt;
              FROM balance_date&lt;br /&gt;
              ORDER BY balance_date DESC&lt;br /&gt;
              LIMIT 1&lt;br /&gt;
          )), 0&lt;br /&gt;
    ) + balance.credit - balance.debit AS Total&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON validity.person_id = person.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id = validity.validity_type_id&lt;br /&gt;
LEFT JOIN account ON account.owner_id = person.id AND account.category = 2&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN balance ON balance.account_id = account.id&lt;br /&gt;
  AND balance.balance_date_id = (&lt;br /&gt;
      SELECT id&lt;br /&gt;
      FROM balance_date&lt;br /&gt;
      ORDER BY balance_date ASC&lt;br /&gt;
      LIMIT 1&lt;br /&gt;
  )&lt;br /&gt;
WHERE grant_date &amp;lt; DATE_SUB(NOW(), INTERVAL 2 YEAR)&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND CAST(accounting.id AS CHAR) =$accountingId&lt;br /&gt;
  AND account.activated = 1&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global non null account balance=&lt;br /&gt;
*List whole account balance at the end of a given date but for only non null account balance&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
    CONCAT( \'[LINK=index.php?menuAction=account_journal&amp;amp;menuParameter=\', accountsSum.account_id, \']\', accountsSum.account_id, \'[/LINK]\' ) AS _tr(ID),&lt;br /&gt;
    accountLayout.export_account AS _tr(ACCOUNT_EXPORT), &lt;br /&gt;
	CASE&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=2 THEN CONCAT(_tr(MEMBER_ACCOUNT), \' \', account_type.name,  \' \', _tr(REPORTS_OF), \' \', person.last_name, \' \', IFNULL(person.first_name, \'\'))&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=3 THEN CONCAT(_tr(AIRCRAFT_ACCOUNT), \' \', account_type.name, \' \', _tr(REPORTS_OF), \' \', resource.name)&lt;br /&gt;
			WHEN accountLayout.category=1 THEN CONCAT(_tr(OTHER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=4 THEN CONCAT(_tr(SUPPLIER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=6 THEN CONCAT(_tr(VAT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=7 THEN CONCAT(_tr(EXPENSE_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=8 THEN CONCAT(_tr(TREASURY_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=9 THEN CONCAT(_tr(PRODUCT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=10 THEN CONCAT(_tr(BALANCE_SHEET_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=11 THEN CONCAT(_tr(CUSTOMER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			ELSE accountLayout.name&lt;br /&gt;
	END AS _tr(ACCOUNT),&lt;br /&gt;
	accountsSum.SOLDE AS _tr(ACCOUNT_BALANCE)&lt;br /&gt;
	FROM (&lt;br /&gt;
		SELECT accountEntriesExtract.account_id,&lt;br /&gt;
		(IFNULL(SUM(accountEntriesExtract.credit), 0.00)  - IFNULL(SUM(accountEntriesExtract.debit), 0.00) ) AS SOLDE&lt;br /&gt;
		FROM (&lt;br /&gt;
			(SELECT account_entry.account_id,&lt;br /&gt;
			IFNULL(account_entry.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(account_entry.credit, 0.00) AS credit&lt;br /&gt;
			FROM account_entry&lt;br /&gt;
			INNER JOIN account ON (account.id = account_entry.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
			WHERE account_date &amp;gt;= \'', balance_date.balance_date ,'\' AND account_date &amp;lt; $endDate&lt;br /&gt;
			)&lt;br /&gt;
			UNION ALL&lt;br /&gt;
			(&lt;br /&gt;
			SELECT &lt;br /&gt;
			account_id,&lt;br /&gt;
			IFNULL(balance.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(balance.credit, 0.00) AS credit&lt;br /&gt;
			FROM balance&lt;br /&gt;
			INNER JOIN account ON (account.id = balance.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
			WHERE balance_date_id = ',  balance_date.id, '&lt;br /&gt;
			)&lt;br /&gt;
		) AS accountEntriesExtract&lt;br /&gt;
		GROUP BY accountEntriesExtract.account_id&lt;br /&gt;
        HAVING SOLDE NOT IN (\'0 \', \'0.00\', \'0,00\')&lt;br /&gt;
	) AS accountsSum&lt;br /&gt;
	INNER JOIN account accountLayout ON (accountLayout.id = accountsSum.account_id AND accountLayout.accounting_id=$accountingId AND (accountLayout.activated = 1 OR (accountLayout.activated=0 AND accountLayout.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
	LEFT JOIN account_type ON (accountLayout.account_type = account_type.id AND accountLayout.category IN(2,3))&lt;br /&gt;
	LEFT JOIN person ON (person.id=accountLayout.owner_id AND accountLayout.category=2) &lt;br /&gt;
	LEFT JOIN resource ON (resource.id=accountLayout.owner_id AND accountLayout.category=3) &lt;br /&gt;
    GROUP BY accountLayout.id &lt;br /&gt;
    ORDER BY accountLayout.export_account ASC&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM balance_date&lt;br /&gt;
WHERE balance_date.balance_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY balance_date DESC&lt;br /&gt;
LIMIT 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=List of all account debit, credit=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT accountLayout.export_account AS _tr(ACCOUNT_EXPORT), &lt;br /&gt;
	CASE&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=2 THEN CONCAT(_tr(MEMBER_ACCOUNT), \' \', account_type.name,  \' \', _tr(REPORTS_OF), \' \', person.last_name, \' \', IFNULL(person.first_name, \'\'))&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=3 THEN CONCAT(_tr(AIRCRAFT_ACCOUNT), \' \', account_type.name, \' \', _tr(REPORTS_OF), \' \', resource.name)&lt;br /&gt;
			WHEN accountLayout.category=1 THEN CONCAT(_tr(OTHER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=4 THEN CONCAT(_tr(SUPPLIER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=6 THEN CONCAT(_tr(VAT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=7 THEN CONCAT(_tr(EXPENSE_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=8 THEN CONCAT(_tr(TREASURY_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=9 THEN CONCAT(_tr(PRODUCT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=10 THEN CONCAT(_tr(BALANCE_SHEET_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=11 THEN CONCAT(_tr(CUSTOMER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			ELSE accountLayout.name&lt;br /&gt;
	END AS _tr(ACCOUNT),&lt;br /&gt;
	IF((@sumAccountEntry := (accountsSum.CREDIT - accountsSum.DEBIT)) &amp;lt; 0, @sumAccountEntry, 0) AS _tr(DEBIT),&lt;br /&gt;
	IF(@sumAccountEntry &amp;lt; 0, 0, @sumAccountEntry) AS _tr(CREDIT)&lt;br /&gt;
	FROM (&lt;br /&gt;
		SELECT accountEntriesExtract.account_id,&lt;br /&gt;
		IFNULL(SUM(accountEntriesExtract.debit), 0.00) AS DEBIT,&lt;br /&gt;
		IFNULL(SUM(accountEntriesExtract.credit), 0.00) AS CREDIT&lt;br /&gt;
		FROM (&lt;br /&gt;
			(SELECT account_entry.account_id,&lt;br /&gt;
			IFNULL(account_entry.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(account_entry.credit, 0.00) AS credit&lt;br /&gt;
			FROM account_entry&lt;br /&gt;
			INNER JOIN account ON (account.id = account_entry.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
			WHERE account_date &amp;gt;= \'', balance_date.balance_date ,'\' AND account_date &amp;lt; $endDate&lt;br /&gt;
			)&lt;br /&gt;
			UNION ALL&lt;br /&gt;
			(&lt;br /&gt;
			SELECT &lt;br /&gt;
			account_id,&lt;br /&gt;
			IFNULL(balance.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(balance.credit, 0.00) AS credit&lt;br /&gt;
			FROM balance&lt;br /&gt;
			INNER JOIN account ON (account.id = balance.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
			WHERE balance_date_id = ',  balance_date.id, '&lt;br /&gt;
			)&lt;br /&gt;
		) AS accountEntriesExtract&lt;br /&gt;
		GROUP BY accountEntriesExtract.account_id&lt;br /&gt;
	) AS accountsSum&lt;br /&gt;
	INNER JOIN account accountLayout ON (accountLayout.id = accountsSum.account_id AND accountLayout.accounting_id=$accountingId AND (accountLayout.activated = 1 OR (accountLayout.activated=0 AND accountLayout.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
	LEFT JOIN account_type ON (accountLayout.account_type = account_type.id AND accountLayout.category IN(2,3))&lt;br /&gt;
	LEFT JOIN person ON (person.id=accountLayout.owner_id AND accountLayout.category=2) &lt;br /&gt;
	LEFT JOIN resource ON (resource.id=accountLayout.owner_id AND accountLayout.category=3) &lt;br /&gt;
    GROUP BY accountLayout.id &lt;br /&gt;
    ORDER BY accountLayout.export_account ASC&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM balance_date&lt;br /&gt;
WHERE balance_date.balance_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY balance_date DESC&lt;br /&gt;
LIMIT 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Monthly distribution of revenue=&lt;br /&gt;
*In [http://fr.wikipedia.org/wiki/Plan_comptable_g%C3%A9n%C3%A9ral_%28France%29#Cadre_comptable french accounting], this query reports each month's revenue distribution. It only concerns [http://doc-fr.openflyers.com/index.php?title=Account#Comptes_de_produits product accounts] (prefixed 7xx) except those that are prefixed 709xxx&lt;br /&gt;
*Additional field $year is needed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account_name,&lt;br /&gt;
    ( IF(febSum&amp;lt;0, febSum, 0) - IF(janSum&amp;lt;0, janSum, 0) + IF(febSum&amp;lt;0, 0, febSum) - IF(janSum&amp;lt;0, 0, janSum) ) AS Janu,&lt;br /&gt;
    ( IF(marSum&amp;lt;0, marSum, 0) - IF(febSum&amp;lt;0, febSum, 0) + IF(marSum&amp;lt;0, 0, marSum) - IF(febSum&amp;lt;0, 0, febSum) ) AS Febr,&lt;br /&gt;
    ( IF(aprSum&amp;lt;0, aprSum, 0) - IF(marSum&amp;lt;0, marSum, 0) + IF(aprSum&amp;lt;0, 0, aprSum) - IF(marSum&amp;lt;0, 0, marSum) ) AS Marc,&lt;br /&gt;
    ( IF(maySum&amp;lt;0, maySum, 0) - IF(aprSum&amp;lt;0, aprSum, 0) + IF(maySum&amp;lt;0, 0, maySum) - IF(aprSum&amp;lt;0, 0, aprSum) ) AS April,&lt;br /&gt;
    ( IF(junSum&amp;lt;0, junSum, 0) - IF(maySum&amp;lt;0, maySum, 0) + IF(junSum&amp;lt;0, 0, junSum) - IF(maySum&amp;lt;0, 0, maySum) ) AS May,&lt;br /&gt;
    ( IF(julSum&amp;lt;0, julSum, 0) - IF(junSum&amp;lt;0, junSum, 0) + IF(julSum&amp;lt;0, 0, julSum) - IF(junSum&amp;lt;0, 0, junSum) ) AS June,&lt;br /&gt;
    ( IF(augSum&amp;lt;0, augSum, 0) - IF(julSum&amp;lt;0, julSum, 0) + IF(augSum&amp;lt;0, 0, augSum) - IF(julSum&amp;lt;0, 0, julSum) ) AS July,&lt;br /&gt;
    ( IF(sepSum&amp;lt;0, sepSum, 0) - IF(augSum&amp;lt;0, augSum, 0) + IF(sepSum&amp;lt;0, 0, sepSum) - IF(augSum&amp;lt;0, 0, augSum) ) AS Augu,&lt;br /&gt;
    ( IF(octSum&amp;lt;0, octSum, 0) - IF(sepSum&amp;lt;0, sepSum, 0) + IF(octSum&amp;lt;0, 0, octSum) - IF(sepSum&amp;lt;0, 0, sepSum) ) AS Sept,&lt;br /&gt;
    ( IF(novSum&amp;lt;0, novSum, 0) - IF(octSum&amp;lt;0, octSum, 0) + IF(novSum&amp;lt;0, 0, novSum) - IF(octSum&amp;lt;0, 0, octSum) ) AS Octo,&lt;br /&gt;
    ( IF(decSum&amp;lt;0, decSum, 0) - IF(novSum&amp;lt;0, novSum, 0) + IF(decSum&amp;lt;0, 0, decSum) - IF(novSum&amp;lt;0, 0, novSum) ) AS Nove,&lt;br /&gt;
    ( IF(nextJanSum&amp;lt;0, nextJanSum, 0) - IF(decSum&amp;lt;0, decSum, 0) + IF(nextJanSum&amp;lt;0, 0, nextJanSum) - IF(decSum&amp;lt;0, 0, decSum) ) AS Dece&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT IF(account.category=3, CONCAT(account.name, ' - ', account_type.name), account.name) AS 'account_name',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-01-01') AS 'janSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-02-01') AS 'febSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-03-01') AS 'marSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-04-01') AS 'aprSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-05-01') AS 'maySum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-06-01') AS 'junSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-07-01') AS 'julSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-08-01') AS 'augSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-09-01') AS 'sepSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-10-01') AS 'octSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-11-01') AS 'novSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-12-01') AS 'decSum',&lt;br /&gt;
    sumAccountEntry(account.id, DATE_ADD('$year-01-01', INTERVAL 12 MONTH)) AS 'nextJanSum'&lt;br /&gt;
    FROM account&lt;br /&gt;
    LEFT JOIN account_type ON (account_type.id = account.account_type)&lt;br /&gt;
    WHERE account.export_account LIKE '7%' AND account.export_account NOT LIKE '709%' AND account.activated=1&lt;br /&gt;
) AS sumAccountEntryForAccount&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Movements total per account between two dates=&lt;br /&gt;
* Variable '''$accountingId''' should be defined first and should be of '''dbOject::Accounting''' value type&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date/Date and time''' value type&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.id, export_account, account.name, IFNULL( SUM(account_entry.credit) - SUM(account_entry.debit), 0 ) AS 'Total'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN account_entry ON (account.id=account_entry.account_id)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date &amp;lt; $endDate&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $startDate) )&lt;br /&gt;
GROUP BY account.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT '', '_', 'Total', IFNULL( SUM(account_entry.credit) - SUM(account_entry.debit), 0 ) AS 'Solde'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN account_entry ON (account.id=account_entry.account_id)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date &amp;lt; $endDate&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $startDate) )&lt;br /&gt;
ORDER BY 2, 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Non balanced flow=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flow_id, SUM(debit) AS totalDebit, SUM(credit) AS totalCredit&lt;br /&gt;
FROM account_entry&lt;br /&gt;
GROUP BY flow_id&lt;br /&gt;
HAVING totalDebit &amp;lt;&amp;gt; totalCredit&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Online payment attempts list=&lt;br /&gt;
Required additional field:&lt;br /&gt;
*$endDate Date type&lt;br /&gt;
*$startDate Date type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT psp_transaction.transaction_date, account.name, psp_transaction.amount, psp_transaction.state FROM psp_transaction&lt;br /&gt;
LEFT JOIN account ON account.id=psp_transaction.credit_account_id&lt;br /&gt;
WHERE psp_transaction.transaction_date &amp;gt;= $startDate AND psp_transaction.transaction_date&amp;lt;=$endDate&lt;br /&gt;
ORDER BY psp_transaction.transaction_date DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Payment dispatching=&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT payment_type AS Num, payment_type.name AS name,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 1 AND payment_type = Num) AS Janu,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 2 AND payment_type = Num) AS Febr,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 3 AND payment_type = Num) AS Marc,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 4 AND payment_type = Num) AS Apri,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 5 AND payment_type = Num) AS May,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 6 AND payment_type = Num) AS June,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 7 AND payment_type = Num) AS July,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 8 AND payment_type = Num) AS Augu,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 9 AND payment_type = Num) AS Sept,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 10 AND payment_type = Num) AS Octo,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 11 AND payment_type = Num) AS Nove,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 12 AND payment_type = Num) AS Dece,&lt;br /&gt;
SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS Total  FROM account_entry LEFT JOIN payment_type ON payment_type = payment_type.id WHERE YEAR( account_date ) = $year AND payment_type IS NOT NULL GROUP BY payment_type UNION SELECT  'Sum per',&lt;br /&gt;
'month',&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 1 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 2 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 3 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 4 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 5 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 6 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 7 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 8 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 9 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 10 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 11 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 12 AND payment_type IS NOT NULL),&lt;br /&gt;
SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS Total FROM account_entry LEFT JOIN payment_type ON payment_type = payment_type.id WHERE YEAR( account_date ) = $year AND payment_type IS NOT NULL&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Payment type=&lt;br /&gt;
Payment types list ordered by type&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of '''Date''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date''' value type.&lt;br /&gt;
*Variable '''$paymentType''' should be defined first and should be of '''dbObject::PaymentType''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT payment_type.name AS _tr(ENCASHMENT_TYPE),&lt;br /&gt;
       IF(account.category = 2, CONCAT( person.last_name, ' ', person.first_name), account.name) AS _tr(NAME), &lt;br /&gt;
       DATE(account_entry.account_date) AS _tr(DATE), &lt;br /&gt;
       account_entry.payment_description AS _tr(DESCRIPTION), account_entry.credit AS _tr(AMOUNT)&lt;br /&gt;
FROM account_entry&lt;br /&gt;
LEFT JOIN payment_type ON payment_type.id = account_entry.payment_type&lt;br /&gt;
LEFT JOIN account ON account.id = account_entry.account_id&lt;br /&gt;
LEFT JOIN person ON person.id = account.owner_id&lt;br /&gt;
WHERE&lt;br /&gt;
    CASE&lt;br /&gt;
        WHEN ($paymentType='') THEN account_entry.payment_type IS NOT NULL&lt;br /&gt;
        ELSE account_entry.payment_type=$paymentType&lt;br /&gt;
    END&lt;br /&gt;
 AND credit &amp;gt; 0 AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date  &amp;lt;= $endDate&lt;br /&gt;
ORDER BY 1, 3, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Resource account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT IFNULL(CONCAT(&lt;br /&gt;
    'SELECT resource.name \'_tr(NAME)\',',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            ' (SELECT sumAccountEntry(account.id, \'$endDate\') AS balance&lt;br /&gt;
               FROM account&lt;br /&gt;
               LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
               WHERE account_type.activated=1&lt;br /&gt;
                 AND account.category=3&lt;br /&gt;
                 AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'$endDate\') )&lt;br /&gt;
                 AND account.owner_id=resource.id&lt;br /&gt;
                 AND account.account_type=',&lt;br /&gt;
            account_type.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(account_type.name, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', (SELECT SUM(sumAccountEntry(account.id, \'$endDate\')) AS balance&lt;br /&gt;
       FROM account&lt;br /&gt;
       LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
       WHERE account_type.activated=1&lt;br /&gt;
         AND account.category=3&lt;br /&gt;
         AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'$endDate\') )&lt;br /&gt;
         AND account.owner_id=resource.id&lt;br /&gt;
       GROUP BY account.owner_id&lt;br /&gt;
    ) AS \'_tr(TOTAL)\'&lt;br /&gt;
    FROM resource WHERE resource.physical=1 AND resource.activated=1 GROUP BY resource.id'&lt;br /&gt;
), 'SELECT \'\'')&lt;br /&gt;
FROM account_type&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account_type.accounting_id&lt;br /&gt;
WHERE account_type.category=3&lt;br /&gt;
  AND account_type.activated=1&lt;br /&gt;
  AND accounting.id='$accountingId'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Statement serving as invoice=&lt;br /&gt;
*Variable '''$startDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be of '''Integer''' value type. &lt;br /&gt;
*Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight_list.duree )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight_list.duree )/600 - FLOOR(SUM( flight_list.duree )/600))*3600),'%i')) AS _tr(COMPLETED_HOURS_NUMBER),&lt;br /&gt;
SUM(flight_list.montant) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM person&lt;br /&gt;
JOIN&lt;br /&gt;
(SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
    AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
        AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT _tr(TOTAL),&lt;br /&gt;
    CONCAT( &lt;br /&gt;
        (&lt;br /&gt;
             SELECT FLOOR(SUM(flight_list.duree)/600)&lt;br /&gt;
             FROM person&lt;br /&gt;
             JOIN&lt;br /&gt;
             (SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
			 LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
             LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
             LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
             LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
             LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
             LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
             WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
             AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
             OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
                AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
             GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
        ),':',&lt;br /&gt;
        TIME_FORMAT(SEC_TO_TIME((&lt;br /&gt;
            (&lt;br /&gt;
                SELECT SUM(flight_list.duree)/600&lt;br /&gt;
                FROM person&lt;br /&gt;
                JOIN&lt;br /&gt;
                (SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
				LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
                LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
                LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
                LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
                LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
                LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
                WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
                AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
                OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
                    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
                GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
            )&lt;br /&gt;
            - &lt;br /&gt;
            (&lt;br /&gt;
                SELECT FLOOR(SUM(flight_list.duree)/600)&lt;br /&gt;
                FROM person&lt;br /&gt;
                JOIN&lt;br /&gt;
                (SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
				LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
                LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
                LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
                LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
                LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
                LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
                WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
                AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
                OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
                    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
                GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
            )&lt;br /&gt;
        )*3600),'%i')&lt;br /&gt;
    ),&lt;br /&gt;
    (&lt;br /&gt;
        SELECT SUM(flight_list.montant)&lt;br /&gt;
        FROM person&lt;br /&gt;
        JOIN&lt;br /&gt;
        (SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
		LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
        LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
        LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
        LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
        LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
        WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
        AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
        OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
            AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
        GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
    )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Statement serving as invoice with flight details=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be of '''Integer''' value type. &lt;br /&gt;
*Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
(&lt;br /&gt;
	SELECT CONCAT(last_name,' ',first_name)&lt;br /&gt;
	FROM person&lt;br /&gt;
	LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
	WHERE flight_pilot.flight_id=flight.id AND flight_pilot.num=0&lt;br /&gt;
&lt;br /&gt;
) AS _tr(LEFT_PLACE),&lt;br /&gt;
(&lt;br /&gt;
	SELECT CONCAT(last_name,' ',first_name)&lt;br /&gt;
	FROM person&lt;br /&gt;
	LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
	WHERE flight_pilot.flight_id=flight.id AND flight_pilot.num=1&lt;br /&gt;
&lt;br /&gt;
) AS _tr(RIGHT_PLACE),&lt;br /&gt;
flight.start_date AS _tr(START_DATE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
(&lt;br /&gt;
	SELECT GROUP_CONCAT( activity_type.name SEPARATOR ', ')&lt;br /&gt;
	FROM flight AS tmp_flight&lt;br /&gt;
	LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
	WHERE tmp_flight.id=flight.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
SUM(account_entry.debit)-SUM(account_entry.credit) AS _tr(AMOUNT),&lt;br /&gt;
business_field_content.content AS _tr(COMMENT)&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN business_field_content ON business_field_content.category_id=flight.id&lt;br /&gt;
LEFT JOIN business_field ON (business_field.id=business_field_content.business_field_id AND business_field.variable='activityComment')&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
	AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY flight.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Supplier bill=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM supplier_bill ORDER BY bill_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Total of debits, credits, balances of each account at the 12/31=&lt;br /&gt;
Required additional field:&lt;br /&gt;
*$year Year type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id, export_account, name, @debit:=sumAccountEntryDebit(id,'$year-12-31 22:59:59') AS Debit, @credit:=sumAccountEntryCredit(id,'$year-12-31 22:59:59') AS Credit, ROUND(@credit-@debit,2) AS solde FROM account WHERE activated=1 ORDER BY export_account&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=User account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbObjectMulti::Profile''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=account_journal&amp;amp;menuParameter=', account.id, ']', account.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    CONCAT( personWithProfile.last_name, ' ', personWithProfile.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    personWithProfile.person_profile AS _tr(PROFILE),&lt;br /&gt;
    account_type.name AS _tr(ACCOUNT_TYPE),&lt;br /&gt;
    IFNULL(sumAccountEntry(account.id,$endDate),0) AS _tr(BALANCE)&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*, GROUP_CONCAT(profile.name ORDER BY profile.name SEPARATOR ', ') AS person_profile&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
    WHERE profile.id IN ($profileId) OR '-' IN ($profileId)&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON personWithProfile.id=account.owner_id &lt;br /&gt;
WHERE account.category=2&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate) )&lt;br /&gt;
  AND CAST(accounting.id AS CHAR) = $accountingId&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
ORDER BY personWithProfile.last_name, personWithProfile.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Validated only or all entries for an account between two dates=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountId''' should be defined first and should be of '''dbObject::Account''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT '' AS _tr(DATE), '' AS _tr(FLOW_NUMBER), '' AS _tr(AFFECTED_ACCOUNTS), _tr(TEXT_BALANCE, $startDate) AS _tr(COMMENTS),&lt;br /&gt;
       IF( (@startBalance := sumValidatedAccountEntry($accountId, $startDate)) &amp;lt; 0, @startBalance, '' ) AS _tr(DEBIT),&lt;br /&gt;
       IF( @startBalance &amp;gt;= 0, @startBalance, '' ) AS _tr(CREDIT)&lt;br /&gt;
UNION&lt;br /&gt;
SELECT account_entry.account_date, account_entry.flow_id, &lt;br /&gt;
       tmp_affected_account.merge_affected_account, &lt;br /&gt;
       IF(&lt;br /&gt;
            flight.id,&lt;br /&gt;
            tmp_activity_comment.content,&lt;br /&gt;
            IF(&lt;br /&gt;
                account_entry.payment_type,&lt;br /&gt;
                CONCAT( payment_type.name, IF( account_entry.payment_description IS NOT NULL, CONCAT(' (', account_entry.payment_description, ')'), '' ) ),&lt;br /&gt;
                account_entry.comments&lt;br /&gt;
            )&lt;br /&gt;
       ) AS comments,&lt;br /&gt;
       account_entry.debit,&lt;br /&gt;
       account_entry.credit&lt;br /&gt;
FROM account_entry&lt;br /&gt;
LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
LEFT JOIN account_type ON (account_type.id=account.account_type)&lt;br /&gt;
LEFT JOIN flight_account_entry ON (flight_account_entry.account_entry_id=account_entry.flow_id)&lt;br /&gt;
LEFT JOIN flight ON (flight.id=flight_account_entry.flight_id)&lt;br /&gt;
LEFT JOIN payment_type ON (payment_type.id=account_entry.payment_type)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT account_entry.id,&lt;br /&gt;
           GROUP_CONCAT( IFNULL( affected_account.name, '' ), IF( affected_account_type.name IS NOT NULL, CONCAT(' (', affected_account_type.name, ')'), '' ) ) AS merge_affected_account&lt;br /&gt;
    FROM account_entry&lt;br /&gt;
    LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
    LEFT JOIN account_entry AS affected_account_entry ON (affected_account_entry.flow_id=account_entry.flow_id)&lt;br /&gt;
    LEFT JOIN account AS affected_account ON (affected_account.id=affected_account_entry.account_id)&lt;br /&gt;
    LEFT JOIN account_type AS affected_account_type ON (affected_account_type.id=affected_account.account_type)&lt;br /&gt;
    WHERE account_entry.account_id=$accountId&lt;br /&gt;
      AND account_entry.account_date&amp;gt;=$startDate AND account_entry.account_date&amp;lt;$endDate&lt;br /&gt;
      AND  (account_entry.validated=1 OR $validatedOnly=0)&lt;br /&gt;
      AND account.id &amp;lt;&amp;gt; affected_account.id&lt;br /&gt;
    GROUP BY account_entry.id&lt;br /&gt;
    ORDER BY account_entry.account_date, account_entry.flow_id, account_entry.product_id&lt;br /&gt;
) AS tmp_affected_account ON (tmp_affected_account.id=account_entry.id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT category_id, business_field_content.content&lt;br /&gt;
    FROM business_field_content&lt;br /&gt;
    LEFT JOIN business_field ON business_field.id=business_field_content.business_field_id&lt;br /&gt;
    WHERE business_field.variable='activityComment'&lt;br /&gt;
) AS tmp_activity_comment ON (flight.id=tmp_activity_comment.category_id)&lt;br /&gt;
WHERE tmp_affected_account.id IS NOT NULL&lt;br /&gt;
GROUP BY account_entry.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT '_', '', '', _tr(TEXT_BALANCE, $endDate),&lt;br /&gt;
       IF( (@endBalance := sumValidatedAccountEntry($accountId, $endDate)) &amp;lt; 0, @endBalance, '' ),&lt;br /&gt;
       IF( @endBalance &amp;gt;= 0, @endBalance, '' )&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Accounting-exports&amp;diff=373</id>
		<title>Accounting exports</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Accounting-exports&amp;diff=373"/>
		<updated>2025-02-21T12:44:06Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Statement serving as invoice */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
This page lists SQL requests for OpenFlyers release 4 export about Accounting.&lt;br /&gt;
&lt;br /&gt;
=Balances of resource accounts=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT IFNULL(CONCAT(&lt;br /&gt;
    'SELECT resource.name \'_tr(NAME)\',',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            ' (SELECT sumAccountEntry(account.id, '$endDate') AS balance&lt;br /&gt;
               FROM account&lt;br /&gt;
               LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
               WHERE account_type.activated=1&lt;br /&gt;
                 AND account.category=3&lt;br /&gt;
                 AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= '$endDate') )&lt;br /&gt;
                 AND account.owner_id=resource.id&lt;br /&gt;
                 AND account.account_type=',&lt;br /&gt;
            account_type.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(account_type.name, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', (SELECT SUM(sumAccountEntry(account.id, '$endDate')) AS balance&lt;br /&gt;
       FROM account&lt;br /&gt;
       LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
       WHERE account_type.activated=1&lt;br /&gt;
         AND account.category=3&lt;br /&gt;
         AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= '$endDate') )&lt;br /&gt;
         AND account.owner_id=resource.id&lt;br /&gt;
       GROUP BY account.owner_id&lt;br /&gt;
    ) AS \'_tr(TOTAL)\'&lt;br /&gt;
    FROM resource WHERE resource.physical=1 AND resource.activated=1 GROUP BY resource.id'&lt;br /&gt;
), 'SELECT \'\'')&lt;br /&gt;
FROM account_type&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account_type.accounting_id&lt;br /&gt;
WHERE account_type.category=3&lt;br /&gt;
  AND account_type.activated=1&lt;br /&gt;
  AND accounting.id=$accountingId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Breakdown by resource accounts of customer invoices=&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT customer_bill_entry.bill_date  AS _tr(DATE),&lt;br /&gt;
	CONCAT(resource_account_type.name, ' - ', resource_account.name) AS _tr(RESOURCE_ACCOUNT),&lt;br /&gt;
    product.label AS _tr(PRODUCT),&lt;br /&gt;
    customer_bill_entry.debit AS _tr(DEBIT),&lt;br /&gt;
    customer_bill_entry.credit AS _tr(CREDIT),&lt;br /&gt;
    CONCAT(person_account_type.name, ' - ', person.last_name, ' ', IFNULL(person.first_name, '')) AS  _tr(ACCOUNT_MEMBER_ACCOUNT)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN person ON person.id = customer_bill_entry.owner_id AND customer_bill_entry.owner_category = 2&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN account_entry AS person_account_entry ON person_account_entry.id = customer_bill_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account AS person_account ON person_account.id = person_account_entry.account_id&lt;br /&gt;
LEFT JOIN account_type AS person_account_type ON person_account_type.id = person_account.account_type&lt;br /&gt;
 &lt;br /&gt;
LEFT JOIN product ON product.id = customer_bill_entry.product_id&lt;br /&gt;
 &lt;br /&gt;
INNER JOIN account_entry AS resource_account_entry ON resource_account_entry.flow_id = customer_bill_entry.account_entry_flow_id&lt;br /&gt;
INNER JOIN account AS resource_account ON resource_account.id = resource_account_entry.account_id AND resource_account.category = 3&lt;br /&gt;
LEFT JOIN account_type AS resource_account_type ON resource_account_type.id = resource_account.account_type&lt;br /&gt;
 &lt;br /&gt;
WHERE bill_date &amp;gt;= $startDate AND bill_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY bill_date;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Carry forwards=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF (account.category = 2, CONCAT(person.last_name,'  &lt;br /&gt;
',IFNULL(person.first_name, ''),' (',account_type.name,')'),&lt;br /&gt;
    IF (account.category = 3,CONCAT(resource.name,'  &lt;br /&gt;
(',account_type.name,')'),account.name)) AS Nom,&lt;br /&gt;
    export_account AS Code_comptable,&lt;br /&gt;
    debit AS 'Debit',&lt;br /&gt;
    credit AS 'Credit'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN balance ON balance.account_id=account.id&lt;br /&gt;
LEFT JOIN person ON person.id=account.owner_id AND account.category = 2&lt;br /&gt;
LEFT JOIN resource ON resource.id=account.owner_id AND account.category = 3&lt;br /&gt;
LEFT JOIN account_type ON account_type.id=account.account_type&lt;br /&gt;
WHERE account.activated = 1&lt;br /&gt;
  AND balance.balance_date_id = (SELECT balance_date.id FROM balance_date ORDER BY balance_date.id DESC LIMIT 1)&lt;br /&gt;
  AND accounting.id=$accountingId&lt;br /&gt;
  AND (&lt;br /&gt;
      (person.id IS NULL AND resource.id IS NULL)&lt;br /&gt;
      OR&lt;br /&gt;
      (person.activated=1 AND account.category=2)&lt;br /&gt;
      OR&lt;br /&gt;
      (resource.activated=1 AND account.category=3)&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY Nom ASC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Category account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CASE&lt;br /&gt;
        WHEN account.category=1 THEN _tr(OTHER_ACCOUNT)&lt;br /&gt;
        WHEN account_type.name IS NOT NULL AND (account.category=2) THEN CONCAT(_tr(MEMBER_ACCOUNT), ' - ', account_type.name)&lt;br /&gt;
        WHEN account_type.name IS NOT NULL AND (account.category=3) THEN CONCAT(_tr(RESOURCE_ACCOUNT), ' - ', account_type.name)&lt;br /&gt;
        WHEN account.category=4 THEN _tr(SUPPLIER_ACCOUNT)&lt;br /&gt;
        WHEN account.category=6 THEN _tr(ACCOUNT_VAT_ACCOUNT)&lt;br /&gt;
        WHEN account.category=7 THEN _tr(ACCOUNT_EXPENSE_ACCOUNT)&lt;br /&gt;
        WHEN account.category=8 THEN _tr(TREASURY_ACCOUNT)&lt;br /&gt;
        WHEN account.category=9 THEN _tr(PRODUCT_ACCOUNT)&lt;br /&gt;
        WHEN account.category=10 THEN _tr(BALANCE_SHEET_ACCOUNT)&lt;br /&gt;
        WHEN account.category=11 THEN _tr(CUSTOMER_ACCOUNT)&lt;br /&gt;
        ELSE account.name&lt;br /&gt;
    END AS _tr(ACCOUNT_TYPE),&lt;br /&gt;
    IFNULL(SUM( sumAccountEntry(account.id,NOW())),0) AS _tr(ACCOUNT_BALANCE)&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN account_type ON (account.account_type = account_type.id AND account.category IN(2,3))&lt;br /&gt;
LEFT JOIN person ON (account.owner_id = person.id AND account.category=2)&lt;br /&gt;
LEFT JOIN resource ON (account.owner_id = resource.id AND account.category=3)&lt;br /&gt;
WHERE account.activated = 1&lt;br /&gt;
  AND accounting.id=$accountingId&lt;br /&gt;
  AND (&lt;br /&gt;
      (person.id IS NULL AND resource.id IS NULL)&lt;br /&gt;
      OR&lt;br /&gt;
      (person.activated=1 AND account.category=2)&lt;br /&gt;
      OR&lt;br /&gt;
      (resource.activated=1 AND account.category=3)&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY account.category&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Cheque deposit slip=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT date_format(ae.registration_date, &amp;quot;%d/%m/%Y&amp;quot;) as &amp;quot;date&amp;quot;, a.name, formatDecimal(ae.credit) as montant, ae.payment_description as libelle, &lt;br /&gt;
(SELECT a2.name FROM account_entry ae2 JOIN account a2 ON a2.id = ae2.account_id WHERE ae2.flow_id = ae.flow_id AND ae2.debit &amp;gt; 0 LIMIT 0,1) as compte_banque, ae.comments as commentaire&lt;br /&gt;
FROM account_entry ae&lt;br /&gt;
JOIN account a&lt;br /&gt;
  ON ae.account_id = a.id&lt;br /&gt;
WHERE a.account_type = 1&lt;br /&gt;
  AND ae.validated = 1&lt;br /&gt;
  AND ae.credit &amp;gt; 0&lt;br /&gt;
ORDER BY ae.registration_date DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Customer bill between date=&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT customer_bill_entry.bill_date AS _tr(DATE), CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=download_customer_bill&amp;amp;menuParameter=', customer_bill_entry.flow_id, ']', customer_bill_entry.customer_bill_id, '[/LINK]' ) AS _tr(BILL)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
WHERE customer_bill_entry.bill_date &amp;gt;= $startDate AND customer_bill_entry.bill_date &amp;lt; $endDate&lt;br /&gt;
GROUP BY customer_bill_entry.customer_bill_id&lt;br /&gt;
ORDER BY customer_bill_entry.customer_bill_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Customer bill per month and per accounting=&lt;br /&gt;
* Variable '''$accountingId''' should be defined first and should be of '''dbOject::Accounting''' value type.&lt;br /&gt;
* Variable '''$month''' should be defined first and should be of '''Month''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.name AS _tr(CUSTOMER), resource_type.name AS _tr(RESOURCE), product.label AS _tr(PRODUCT), SUM(customer_bill_entry.qty) AS _tr(QUANTITY), SUM(customer_bill_entry.debit) AS _tr(AMOUNT)&lt;br /&gt;
FROM customer_bill_entry&lt;br /&gt;
LEFT JOIN account_entry ON (account_entry.flow_id=customer_bill_entry.account_entry_flow_id AND account_entry.id=customer_bill_entry.account_entry_id)&lt;br /&gt;
LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
LEFT JOIN accounting ON (accounting.id=account.accounting_id)&lt;br /&gt;
LEFT JOIN product ON (product.id=customer_bill_entry.product_id)&lt;br /&gt;
LEFT JOIN flight_account_entry ON (account_entry.flow_id=flight_account_entry.account_entry_id)&lt;br /&gt;
LEFT JOIN flight ON (flight.id=flight_account_entry.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
WHERE account.category = 2&lt;br /&gt;
  AND accounting.id = $accountingId&lt;br /&gt;
  AND YEAR(account_entry.account_date) = $year&lt;br /&gt;
  AND MONTH(account_entry.account_date) = $month&lt;br /&gt;
GROUP BY account.id, resource_type.id, product.id&lt;br /&gt;
ORDER BY account.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Get the details (specially the id) of an account according its name=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `account` WHERE `name` LIKE 'account name to search'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Get the user owner of an account=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM person RIGHT JOIN account ON person.id=account.owner_id WHERE account.id=114&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global account balance=&lt;br /&gt;
List whole account balance at the end of a given date :&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.id, export_account, account.name,&lt;br /&gt;
IFNULL(sumAccountEntry(account.id, $endDate), 0) AS solde&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON (accounting.id=account.accounting_id)&lt;br /&gt;
LEFT JOIN person ON (person.id=account.owner_id AND account.category=2)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=account.owner_id AND account.category=3)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate) )&lt;br /&gt;
ORDER BY 2, 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global account balance last subscription=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$validityTypeId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name, ' ', first_name) AS _tr(FULL_NAME),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY),&lt;br /&gt;
    grant_date AS _tr(VALIDITY_GRANT_DATE),&lt;br /&gt;
    IFNULL((&lt;br /&gt;
        SELECT SUM(account_entry.credit) - SUM(account_entry.debit)&lt;br /&gt;
        FROM account_entry &lt;br /&gt;
        WHERE account_entry.account_id = account.id&lt;br /&gt;
          AND account_entry.account_date &amp;gt; (&lt;br /&gt;
              SELECT balance_date &lt;br /&gt;
              FROM balance_date&lt;br /&gt;
              ORDER BY balance_date DESC&lt;br /&gt;
              LIMIT 1&lt;br /&gt;
          )), 0&lt;br /&gt;
    ) + balance.credit - balance.debit AS Total&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON validity.person_id = person.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id = validity.validity_type_id&lt;br /&gt;
LEFT JOIN account ON account.owner_id = person.id AND account.category = 2&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN balance ON balance.account_id = account.id&lt;br /&gt;
  AND balance.balance_date_id = (&lt;br /&gt;
      SELECT id&lt;br /&gt;
      FROM balance_date&lt;br /&gt;
      ORDER BY balance_date ASC&lt;br /&gt;
      LIMIT 1&lt;br /&gt;
  )&lt;br /&gt;
WHERE grant_date &amp;lt; DATE_SUB(NOW(), INTERVAL 2 YEAR)&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND CAST(accounting.id AS CHAR) =$accountingId&lt;br /&gt;
  AND account.activated = 1&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Global non null account balance=&lt;br /&gt;
*List whole account balance at the end of a given date but for only non null account balance&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
    CONCAT( \'[LINK=index.php?menuAction=account_journal&amp;amp;menuParameter=\', accountsSum.account_id, \']\', accountsSum.account_id, \'[/LINK]\' ) AS _tr(ID),&lt;br /&gt;
    accountLayout.export_account AS _tr(ACCOUNT_EXPORT), &lt;br /&gt;
	CASE&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=2 THEN CONCAT(_tr(MEMBER_ACCOUNT), \' \', account_type.name,  \' \', _tr(REPORTS_OF), \' \', person.last_name, \' \', IFNULL(person.first_name, \'\'))&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=3 THEN CONCAT(_tr(AIRCRAFT_ACCOUNT), \' \', account_type.name, \' \', _tr(REPORTS_OF), \' \', resource.name)&lt;br /&gt;
			WHEN accountLayout.category=1 THEN CONCAT(_tr(OTHER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=4 THEN CONCAT(_tr(SUPPLIER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=6 THEN CONCAT(_tr(VAT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=7 THEN CONCAT(_tr(EXPENSE_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=8 THEN CONCAT(_tr(TREASURY_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=9 THEN CONCAT(_tr(PRODUCT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=10 THEN CONCAT(_tr(BALANCE_SHEET_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=11 THEN CONCAT(_tr(CUSTOMER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			ELSE accountLayout.name&lt;br /&gt;
	END AS _tr(ACCOUNT),&lt;br /&gt;
	accountsSum.SOLDE AS _tr(ACCOUNT_BALANCE)&lt;br /&gt;
	FROM (&lt;br /&gt;
		SELECT accountEntriesExtract.account_id,&lt;br /&gt;
		(IFNULL(SUM(accountEntriesExtract.credit), 0.00)  - IFNULL(SUM(accountEntriesExtract.debit), 0.00) ) AS SOLDE&lt;br /&gt;
		FROM (&lt;br /&gt;
			(SELECT account_entry.account_id,&lt;br /&gt;
			IFNULL(account_entry.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(account_entry.credit, 0.00) AS credit&lt;br /&gt;
			FROM account_entry&lt;br /&gt;
			INNER JOIN account ON (account.id = account_entry.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
			WHERE account_date &amp;gt;= \'', balance_date.balance_date ,'\' AND account_date &amp;lt; $endDate&lt;br /&gt;
			)&lt;br /&gt;
			UNION ALL&lt;br /&gt;
			(&lt;br /&gt;
			SELECT &lt;br /&gt;
			account_id,&lt;br /&gt;
			IFNULL(balance.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(balance.credit, 0.00) AS credit&lt;br /&gt;
			FROM balance&lt;br /&gt;
			INNER JOIN account ON (account.id = balance.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
			WHERE balance_date_id = ',  balance_date.id, '&lt;br /&gt;
			)&lt;br /&gt;
		) AS accountEntriesExtract&lt;br /&gt;
		GROUP BY accountEntriesExtract.account_id&lt;br /&gt;
        HAVING SOLDE NOT IN (\'0 \', \'0.00\', \'0,00\')&lt;br /&gt;
	) AS accountsSum&lt;br /&gt;
	INNER JOIN account accountLayout ON (accountLayout.id = accountsSum.account_id AND accountLayout.accounting_id=$accountingId AND (accountLayout.activated = 1 OR (accountLayout.activated=0 AND accountLayout.deactivated_date &amp;gt;= $endDate)))&lt;br /&gt;
	LEFT JOIN account_type ON (accountLayout.account_type = account_type.id AND accountLayout.category IN(2,3))&lt;br /&gt;
	LEFT JOIN person ON (person.id=accountLayout.owner_id AND accountLayout.category=2) &lt;br /&gt;
	LEFT JOIN resource ON (resource.id=accountLayout.owner_id AND accountLayout.category=3) &lt;br /&gt;
    GROUP BY accountLayout.id &lt;br /&gt;
    ORDER BY accountLayout.export_account ASC&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM balance_date&lt;br /&gt;
WHERE balance_date.balance_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY balance_date DESC&lt;br /&gt;
LIMIT 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=List of all account debit, credit=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT accountLayout.export_account AS _tr(ACCOUNT_EXPORT), &lt;br /&gt;
	CASE&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=2 THEN CONCAT(_tr(MEMBER_ACCOUNT), \' \', account_type.name,  \' \', _tr(REPORTS_OF), \' \', person.last_name, \' \', IFNULL(person.first_name, \'\'))&lt;br /&gt;
			WHEN account_type.name IS NOT NULL AND accountLayout.category=3 THEN CONCAT(_tr(AIRCRAFT_ACCOUNT), \' \', account_type.name, \' \', _tr(REPORTS_OF), \' \', resource.name)&lt;br /&gt;
			WHEN accountLayout.category=1 THEN CONCAT(_tr(OTHER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=4 THEN CONCAT(_tr(SUPPLIER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=6 THEN CONCAT(_tr(VAT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=7 THEN CONCAT(_tr(EXPENSE_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=8 THEN CONCAT(_tr(TREASURY_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=9 THEN CONCAT(_tr(PRODUCT_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=10 THEN CONCAT(_tr(BALANCE_SHEET_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			WHEN accountLayout.category=11 THEN CONCAT(_tr(CUSTOMER_ACCOUNT), \' \', accountLayout.name)&lt;br /&gt;
			ELSE accountLayout.name&lt;br /&gt;
	END AS _tr(ACCOUNT),&lt;br /&gt;
	IF((@sumAccountEntry := (accountsSum.CREDIT - accountsSum.DEBIT)) &amp;lt; 0, @sumAccountEntry, 0) AS _tr(DEBIT),&lt;br /&gt;
	IF(@sumAccountEntry &amp;lt; 0, 0, @sumAccountEntry) AS _tr(CREDIT)&lt;br /&gt;
	FROM (&lt;br /&gt;
		SELECT accountEntriesExtract.account_id,&lt;br /&gt;
		IFNULL(SUM(accountEntriesExtract.debit), 0.00) AS DEBIT,&lt;br /&gt;
		IFNULL(SUM(accountEntriesExtract.credit), 0.00) AS CREDIT&lt;br /&gt;
		FROM (&lt;br /&gt;
			(SELECT account_entry.account_id,&lt;br /&gt;
			IFNULL(account_entry.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(account_entry.credit, 0.00) AS credit&lt;br /&gt;
			FROM account_entry&lt;br /&gt;
			INNER JOIN account ON (account.id = account_entry.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
			WHERE account_date &amp;gt;= \'', balance_date.balance_date ,'\' AND account_date &amp;lt; $endDate&lt;br /&gt;
			)&lt;br /&gt;
			UNION ALL&lt;br /&gt;
			(&lt;br /&gt;
			SELECT &lt;br /&gt;
			account_id,&lt;br /&gt;
			IFNULL(balance.debit, 0.00) AS debit,&lt;br /&gt;
			IFNULL(balance.credit, 0.00) AS credit&lt;br /&gt;
			FROM balance&lt;br /&gt;
			INNER JOIN account ON (account.id = balance.account_id AND account.accounting_id=$accountingId AND (account.activated = 1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
			WHERE balance_date_id = ',  balance_date.id, '&lt;br /&gt;
			)&lt;br /&gt;
		) AS accountEntriesExtract&lt;br /&gt;
		GROUP BY accountEntriesExtract.account_id&lt;br /&gt;
	) AS accountsSum&lt;br /&gt;
	INNER JOIN account accountLayout ON (accountLayout.id = accountsSum.account_id AND accountLayout.accounting_id=$accountingId AND (accountLayout.activated = 1 OR (accountLayout.activated=0 AND accountLayout.deactivated_date &amp;gt;= \'', balance_date.balance_date ,'\')))&lt;br /&gt;
	LEFT JOIN account_type ON (accountLayout.account_type = account_type.id AND accountLayout.category IN(2,3))&lt;br /&gt;
	LEFT JOIN person ON (person.id=accountLayout.owner_id AND accountLayout.category=2) &lt;br /&gt;
	LEFT JOIN resource ON (resource.id=accountLayout.owner_id AND accountLayout.category=3) &lt;br /&gt;
    GROUP BY accountLayout.id &lt;br /&gt;
    ORDER BY accountLayout.export_account ASC&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM balance_date&lt;br /&gt;
WHERE balance_date.balance_date &amp;lt; $endDate&lt;br /&gt;
ORDER BY balance_date DESC&lt;br /&gt;
LIMIT 1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Monthly distribution of revenue=&lt;br /&gt;
*In [http://fr.wikipedia.org/wiki/Plan_comptable_g%C3%A9n%C3%A9ral_%28France%29#Cadre_comptable french accounting], this query reports each month's revenue distribution. It only concerns [http://doc-fr.openflyers.com/index.php?title=Account#Comptes_de_produits product accounts] (prefixed 7xx) except those that are prefixed 709xxx&lt;br /&gt;
*Additional field $year is needed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account_name,&lt;br /&gt;
    ( IF(febSum&amp;lt;0, febSum, 0) - IF(janSum&amp;lt;0, janSum, 0) + IF(febSum&amp;lt;0, 0, febSum) - IF(janSum&amp;lt;0, 0, janSum) ) AS Janu,&lt;br /&gt;
    ( IF(marSum&amp;lt;0, marSum, 0) - IF(febSum&amp;lt;0, febSum, 0) + IF(marSum&amp;lt;0, 0, marSum) - IF(febSum&amp;lt;0, 0, febSum) ) AS Febr,&lt;br /&gt;
    ( IF(aprSum&amp;lt;0, aprSum, 0) - IF(marSum&amp;lt;0, marSum, 0) + IF(aprSum&amp;lt;0, 0, aprSum) - IF(marSum&amp;lt;0, 0, marSum) ) AS Marc,&lt;br /&gt;
    ( IF(maySum&amp;lt;0, maySum, 0) - IF(aprSum&amp;lt;0, aprSum, 0) + IF(maySum&amp;lt;0, 0, maySum) - IF(aprSum&amp;lt;0, 0, aprSum) ) AS April,&lt;br /&gt;
    ( IF(junSum&amp;lt;0, junSum, 0) - IF(maySum&amp;lt;0, maySum, 0) + IF(junSum&amp;lt;0, 0, junSum) - IF(maySum&amp;lt;0, 0, maySum) ) AS May,&lt;br /&gt;
    ( IF(julSum&amp;lt;0, julSum, 0) - IF(junSum&amp;lt;0, junSum, 0) + IF(julSum&amp;lt;0, 0, julSum) - IF(junSum&amp;lt;0, 0, junSum) ) AS June,&lt;br /&gt;
    ( IF(augSum&amp;lt;0, augSum, 0) - IF(julSum&amp;lt;0, julSum, 0) + IF(augSum&amp;lt;0, 0, augSum) - IF(julSum&amp;lt;0, 0, julSum) ) AS July,&lt;br /&gt;
    ( IF(sepSum&amp;lt;0, sepSum, 0) - IF(augSum&amp;lt;0, augSum, 0) + IF(sepSum&amp;lt;0, 0, sepSum) - IF(augSum&amp;lt;0, 0, augSum) ) AS Augu,&lt;br /&gt;
    ( IF(octSum&amp;lt;0, octSum, 0) - IF(sepSum&amp;lt;0, sepSum, 0) + IF(octSum&amp;lt;0, 0, octSum) - IF(sepSum&amp;lt;0, 0, sepSum) ) AS Sept,&lt;br /&gt;
    ( IF(novSum&amp;lt;0, novSum, 0) - IF(octSum&amp;lt;0, octSum, 0) + IF(novSum&amp;lt;0, 0, novSum) - IF(octSum&amp;lt;0, 0, octSum) ) AS Octo,&lt;br /&gt;
    ( IF(decSum&amp;lt;0, decSum, 0) - IF(novSum&amp;lt;0, novSum, 0) + IF(decSum&amp;lt;0, 0, decSum) - IF(novSum&amp;lt;0, 0, novSum) ) AS Nove,&lt;br /&gt;
    ( IF(nextJanSum&amp;lt;0, nextJanSum, 0) - IF(decSum&amp;lt;0, decSum, 0) + IF(nextJanSum&amp;lt;0, 0, nextJanSum) - IF(decSum&amp;lt;0, 0, decSum) ) AS Dece&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT IF(account.category=3, CONCAT(account.name, ' - ', account_type.name), account.name) AS 'account_name',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-01-01') AS 'janSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-02-01') AS 'febSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-03-01') AS 'marSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-04-01') AS 'aprSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-05-01') AS 'maySum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-06-01') AS 'junSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-07-01') AS 'julSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-08-01') AS 'augSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-09-01') AS 'sepSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-10-01') AS 'octSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-11-01') AS 'novSum',&lt;br /&gt;
    sumAccountEntry(account.id, '$year-12-01') AS 'decSum',&lt;br /&gt;
    sumAccountEntry(account.id, DATE_ADD('$year-01-01', INTERVAL 12 MONTH)) AS 'nextJanSum'&lt;br /&gt;
    FROM account&lt;br /&gt;
    LEFT JOIN account_type ON (account_type.id = account.account_type)&lt;br /&gt;
    WHERE account.export_account LIKE '7%' AND account.export_account NOT LIKE '709%' AND account.activated=1&lt;br /&gt;
) AS sumAccountEntryForAccount&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Movements total per account between two dates=&lt;br /&gt;
* Variable '''$accountingId''' should be defined first and should be of '''dbOject::Accounting''' value type&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date/Date and time''' value type&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT account.id, export_account, account.name, IFNULL( SUM(account_entry.credit) - SUM(account_entry.debit), 0 ) AS 'Total'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN account_entry ON (account.id=account_entry.account_id)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date &amp;lt; $endDate&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $startDate) )&lt;br /&gt;
GROUP BY account.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT '', '_', 'Total', IFNULL( SUM(account_entry.credit) - SUM(account_entry.debit), 0 ) AS 'Solde'&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id&lt;br /&gt;
LEFT JOIN account_entry ON (account.id=account_entry.account_id)&lt;br /&gt;
WHERE accounting.id=$accountingId&lt;br /&gt;
  AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date &amp;lt; $endDate&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $startDate) )&lt;br /&gt;
ORDER BY 2, 3&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Non balanced flow=&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flow_id, SUM(debit) AS totalDebit, SUM(credit) AS totalCredit&lt;br /&gt;
FROM account_entry&lt;br /&gt;
GROUP BY flow_id&lt;br /&gt;
HAVING totalDebit &amp;lt;&amp;gt; totalCredit&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Online payment attempts list=&lt;br /&gt;
Required additional field:&lt;br /&gt;
*$endDate Date type&lt;br /&gt;
*$startDate Date type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT psp_transaction.transaction_date, account.name, psp_transaction.amount, psp_transaction.state FROM psp_transaction&lt;br /&gt;
LEFT JOIN account ON account.id=psp_transaction.credit_account_id&lt;br /&gt;
WHERE psp_transaction.transaction_date &amp;gt;= $startDate AND psp_transaction.transaction_date&amp;lt;=$endDate&lt;br /&gt;
ORDER BY psp_transaction.transaction_date DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Payment dispatching=&lt;br /&gt;
  &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT payment_type AS Num, payment_type.name AS name,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 1 AND payment_type = Num) AS Janu,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 2 AND payment_type = Num) AS Febr,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 3 AND payment_type = Num) AS Marc,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 4 AND payment_type = Num) AS Apri,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 5 AND payment_type = Num) AS May,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 6 AND payment_type = Num) AS June,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 7 AND payment_type = Num) AS July,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 8 AND payment_type = Num) AS Augu,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 9 AND payment_type = Num) AS Sept,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 10 AND payment_type = Num) AS Octo,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 11 AND payment_type = Num) AS Nove,&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 12 AND payment_type = Num) AS Dece,&lt;br /&gt;
SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS Total  FROM account_entry LEFT JOIN payment_type ON payment_type = payment_type.id WHERE YEAR( account_date ) = $year AND payment_type IS NOT NULL GROUP BY payment_type UNION SELECT  'Sum per',&lt;br /&gt;
'month',&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 1 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 2 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 3 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 4 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 5 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 6 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 7 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 8 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 9 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 10 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 11 AND payment_type IS NOT NULL),&lt;br /&gt;
(SELECT SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS credit FROM account_entry WHERE YEAR(account_date)= $year AND MONTH(account_date)= 12 AND payment_type IS NOT NULL),&lt;br /&gt;
SUM( CAST( account_entry.credit AS DECIMAL(10,2) ) ) AS Total FROM account_entry LEFT JOIN payment_type ON payment_type = payment_type.id WHERE YEAR( account_date ) = $year AND payment_type IS NOT NULL&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Payment type=&lt;br /&gt;
Payment types list ordered by type&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of '''Date''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date''' value type.&lt;br /&gt;
*Variable '''$paymentType''' should be defined first and should be of '''dbObject::PaymentType''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT payment_type.name AS _tr(ENCASHMENT_TYPE),&lt;br /&gt;
       IF(account.category = 2, CONCAT( person.last_name, ' ', person.first_name), account.name) AS _tr(NAME), &lt;br /&gt;
       DATE(account_entry.account_date) AS _tr(DATE), &lt;br /&gt;
       account_entry.payment_description AS _tr(DESCRIPTION), account_entry.credit AS _tr(AMOUNT)&lt;br /&gt;
FROM account_entry&lt;br /&gt;
LEFT JOIN payment_type ON payment_type.id = account_entry.payment_type&lt;br /&gt;
LEFT JOIN account ON account.id = account_entry.account_id&lt;br /&gt;
LEFT JOIN person ON person.id = account.owner_id&lt;br /&gt;
WHERE&lt;br /&gt;
    CASE&lt;br /&gt;
        WHEN ($paymentType='') THEN account_entry.payment_type IS NOT NULL&lt;br /&gt;
        ELSE account_entry.payment_type=$paymentType&lt;br /&gt;
    END&lt;br /&gt;
 AND credit &amp;gt; 0 AND account_entry.account_date &amp;gt;= $startDate AND account_entry.account_date  &amp;lt;= $endDate&lt;br /&gt;
ORDER BY 1, 3, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Resource account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT IFNULL(CONCAT(&lt;br /&gt;
    'SELECT resource.name \'_tr(NAME)\',',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            ' (SELECT sumAccountEntry(account.id, \'$endDate\') AS balance&lt;br /&gt;
               FROM account&lt;br /&gt;
               LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
               WHERE account_type.activated=1&lt;br /&gt;
                 AND account.category=3&lt;br /&gt;
                 AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'$endDate\') )&lt;br /&gt;
                 AND account.owner_id=resource.id&lt;br /&gt;
                 AND account.account_type=',&lt;br /&gt;
            account_type.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(account_type.name, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', (SELECT SUM(sumAccountEntry(account.id, \'$endDate\')) AS balance&lt;br /&gt;
       FROM account&lt;br /&gt;
       LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
       WHERE account_type.activated=1&lt;br /&gt;
         AND account.category=3&lt;br /&gt;
         AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= \'$endDate\') )&lt;br /&gt;
         AND account.owner_id=resource.id&lt;br /&gt;
       GROUP BY account.owner_id&lt;br /&gt;
    ) AS \'_tr(TOTAL)\'&lt;br /&gt;
    FROM resource WHERE resource.physical=1 AND resource.activated=1 GROUP BY resource.id'&lt;br /&gt;
), 'SELECT \'\'')&lt;br /&gt;
FROM account_type&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account_type.accounting_id&lt;br /&gt;
WHERE account_type.category=3&lt;br /&gt;
  AND account_type.activated=1&lt;br /&gt;
  AND accounting.id='$accountingId'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Statement serving as invoice=&lt;br /&gt;
*Variable '''$startDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be of '''Integer''' value type. &lt;br /&gt;
*Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight_list.duree )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight_list.duree )/600 - FLOOR(SUM( flight_list.duree )/600))*3600),'%i')) AS _tr(COMPLETED_HOURS_NUMBER),&lt;br /&gt;
SUM(flight_list.montant) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM person&lt;br /&gt;
JOIN&lt;br /&gt;
(SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
    AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
        AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT _tr(TOTAL),&lt;br /&gt;
    CONCAT( &lt;br /&gt;
        (&lt;br /&gt;
             SELECT FLOOR(SUM(flight_list.duree)/600)&lt;br /&gt;
             FROM person&lt;br /&gt;
             JOIN&lt;br /&gt;
             (SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
			 LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
             LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
             LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
             LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
             LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
             LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
             WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
             AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
             OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
                AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
             GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
        ),':',&lt;br /&gt;
        TIME_FORMAT(SEC_TO_TIME((&lt;br /&gt;
            (&lt;br /&gt;
                SELECT SUM(flight_list.duree)/600&lt;br /&gt;
                FROM person&lt;br /&gt;
                JOIN&lt;br /&gt;
                (SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
				LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
                LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
                LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
                LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
                LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
                LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
                WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
                AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
                OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
                    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
                GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
            )&lt;br /&gt;
            - &lt;br /&gt;
            (&lt;br /&gt;
                SELECT FLOOR(SUM(flight_list.duree)/600)&lt;br /&gt;
                FROM person&lt;br /&gt;
                JOIN&lt;br /&gt;
                (SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
				LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
                LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
                LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
                LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
                LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
                LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
                WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
                AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
                OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
                    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
                GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
            )&lt;br /&gt;
        )*3600),'%i')&lt;br /&gt;
    ),&lt;br /&gt;
    (&lt;br /&gt;
        SELECT SUM(flight_list.montant)&lt;br /&gt;
        FROM person&lt;br /&gt;
        JOIN&lt;br /&gt;
        (SELECT person.id AS person_id, flight.id AS vol, flight.duration AS duree, SUM(account_entry.debit)-SUM(account_entry.credit) AS montant FROM person&lt;br /&gt;
		LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
        LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
        LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
        LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
        LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
        WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
        AND (IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
        OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
            AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
        GROUP BY flight.id) AS flight_list ON flight_list.person_id=person.id&lt;br /&gt;
    )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Statement serving as invoice with flight details=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be of '''Integer''' value type. &lt;br /&gt;
*Variable '''$occupiedSeat''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
(&lt;br /&gt;
	SELECT CONCAT(last_name,' ',first_name)&lt;br /&gt;
	FROM person&lt;br /&gt;
	LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
	WHERE flight_pilot.flight_id=flight.id AND flight_pilot.num=0&lt;br /&gt;
&lt;br /&gt;
) AS _tr(LEFT_PLACE),&lt;br /&gt;
(&lt;br /&gt;
	SELECT CONCAT(last_name,' ',first_name)&lt;br /&gt;
	FROM person&lt;br /&gt;
	LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
	WHERE flight_pilot.flight_id=flight.id AND flight_pilot.num=1&lt;br /&gt;
&lt;br /&gt;
) AS _tr(RIGHT_PLACE),&lt;br /&gt;
flight.start_date AS _tr(START_DATE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
(&lt;br /&gt;
	SELECT GROUP_CONCAT( activity_type.name SEPARATOR ', ')&lt;br /&gt;
	FROM flight AS tmp_flight&lt;br /&gt;
	LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
	WHERE tmp_flight.id=flight.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
SUM(account_entry.debit)-SUM(account_entry.credit) AS _tr(AMOUNT),&lt;br /&gt;
business_field_content.content AS _tr(COMMENT)&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.pilot_id=person.id&lt;br /&gt;
LEFT JOIN flight ON flight.id=flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN business_field_content ON business_field_content.category_id=flight.id&lt;br /&gt;
LEFT JOIN business_field ON (business_field.id=business_field_content.business_field_id AND business_field.variable='activityComment')&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
AND (IF((($occupiedSeat=0)OR($occupiedSeat='')), 0, -1) = flight_pilot.num&lt;br /&gt;
OR IF((($occupiedSeat=1)OR($occupiedSeat='')), 1, -1) = flight_pilot.num)&lt;br /&gt;
	AND ( profile.id IN ($profileId) OR '-' IN ($profileId) ) AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY flight.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Supplier bill=&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM supplier_bill ORDER BY bill_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Total of debits, credits, balances of each account at the 12/31=&lt;br /&gt;
Required additional field:&lt;br /&gt;
*$year Year type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id, export_account, name, @debit:=sumAccountEntryDebit(id,'$year-12-31 22:59:59') AS Debit, @credit:=sumAccountEntryCredit(id,'$year-12-31 22:59:59') AS Credit, ROUND(@credit-@debit,2) AS solde FROM account WHERE activated=1 ORDER BY export_account&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=User account balance=&lt;br /&gt;
*Variable '''$accountingId''' should be defined first and should be of '''dbObject::Accounting''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of value type '''Date and time''' value type.&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbObjectMulti::Profile''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=account_journal&amp;amp;menuParameter=', account.id, ']', account.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    CONCAT( personWithProfile.last_name, ' ', personWithProfile.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    personWithProfile.person_profile AS _tr(PROFILE),&lt;br /&gt;
    account_type.name AS _tr(ACCOUNT_TYPE),&lt;br /&gt;
    IFNULL(sumAccountEntry(account.id,$endDate),0) AS _tr(BALANCE)&lt;br /&gt;
FROM account&lt;br /&gt;
LEFT JOIN accounting ON accounting.id=account.accounting_id &lt;br /&gt;
LEFT JOIN account_type ON (account.account_type=account_type.id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*, GROUP_CONCAT(profile.name ORDER BY profile.name SEPARATOR ', ') AS person_profile&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
    WHERE profile.id IN ($profileId) OR '-' IN ($profileId)&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON personWithProfile.id=account.owner_id &lt;br /&gt;
WHERE account.category=2&lt;br /&gt;
  AND ( account.activated=1 OR (account.activated=0 AND account.deactivated_date &amp;gt;= $endDate) )&lt;br /&gt;
  AND CAST(accounting.id AS CHAR) = $accountingId&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
ORDER BY personWithProfile.last_name, personWithProfile.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Validated only or all entries for an account between two dates=&lt;br /&gt;
&lt;br /&gt;
*Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
*Variable '''$accountId''' should be defined first and should be of '''dbObject::Account''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT '' AS _tr(DATE), '' AS _tr(FLOW_NUMBER), '' AS _tr(AFFECTED_ACCOUNTS), _tr(TEXT_BALANCE, $startDate) AS _tr(COMMENTS),&lt;br /&gt;
       IF( (@startBalance := sumValidatedAccountEntry($accountId, $startDate)) &amp;lt; 0, @startBalance, '' ) AS _tr(DEBIT),&lt;br /&gt;
       IF( @startBalance &amp;gt;= 0, @startBalance, '' ) AS _tr(CREDIT)&lt;br /&gt;
UNION&lt;br /&gt;
SELECT account_entry.account_date, account_entry.flow_id, &lt;br /&gt;
       tmp_affected_account.merge_affected_account, &lt;br /&gt;
       IF(&lt;br /&gt;
            flight.id,&lt;br /&gt;
            tmp_activity_comment.content,&lt;br /&gt;
            IF(&lt;br /&gt;
                account_entry.payment_type,&lt;br /&gt;
                CONCAT( payment_type.name, IF( account_entry.payment_description IS NOT NULL, CONCAT(' (', account_entry.payment_description, ')'), '' ) ),&lt;br /&gt;
                account_entry.comments&lt;br /&gt;
            )&lt;br /&gt;
       ) AS comments,&lt;br /&gt;
       account_entry.debit,&lt;br /&gt;
       account_entry.credit&lt;br /&gt;
FROM account_entry&lt;br /&gt;
LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
LEFT JOIN account_type ON (account_type.id=account.account_type)&lt;br /&gt;
LEFT JOIN flight_account_entry ON (flight_account_entry.account_entry_id=account_entry.flow_id)&lt;br /&gt;
LEFT JOIN flight ON (flight.id=flight_account_entry.flight_id)&lt;br /&gt;
LEFT JOIN payment_type ON (payment_type.id=account_entry.payment_type)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT account_entry.id,&lt;br /&gt;
           GROUP_CONCAT( IFNULL( affected_account.name, '' ), IF( affected_account_type.name IS NOT NULL, CONCAT(' (', affected_account_type.name, ')'), '' ) ) AS merge_affected_account&lt;br /&gt;
    FROM account_entry&lt;br /&gt;
    LEFT JOIN account ON (account.id=account_entry.account_id)&lt;br /&gt;
    LEFT JOIN account_entry AS affected_account_entry ON (affected_account_entry.flow_id=account_entry.flow_id)&lt;br /&gt;
    LEFT JOIN account AS affected_account ON (affected_account.id=affected_account_entry.account_id)&lt;br /&gt;
    LEFT JOIN account_type AS affected_account_type ON (affected_account_type.id=affected_account.account_type)&lt;br /&gt;
    WHERE account_entry.account_id=$accountId&lt;br /&gt;
      AND account_entry.account_date&amp;gt;=$startDate AND account_entry.account_date&amp;lt;$endDate&lt;br /&gt;
      AND  (account_entry.validated=1 OR $validatedOnly=0)&lt;br /&gt;
      AND account.id &amp;lt;&amp;gt; affected_account.id&lt;br /&gt;
    GROUP BY account_entry.id&lt;br /&gt;
    ORDER BY account_entry.account_date, account_entry.flow_id, account_entry.product_id&lt;br /&gt;
) AS tmp_affected_account ON (tmp_affected_account.id=account_entry.id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT category_id, business_field_content.content&lt;br /&gt;
    FROM business_field_content&lt;br /&gt;
    LEFT JOIN business_field ON business_field.id=business_field_content.business_field_id&lt;br /&gt;
    WHERE business_field.variable='activityComment'&lt;br /&gt;
) AS tmp_activity_comment ON (flight.id=tmp_activity_comment.category_id)&lt;br /&gt;
WHERE tmp_affected_account.id IS NOT NULL&lt;br /&gt;
GROUP BY account_entry.id&lt;br /&gt;
UNION&lt;br /&gt;
SELECT '_', '', '', _tr(TEXT_BALANCE, $endDate),&lt;br /&gt;
       IF( (@endBalance := sumValidatedAccountEntry($accountId, $endDate)) &amp;lt; 0, @endBalance, '' ),&lt;br /&gt;
       IF( @endBalance &amp;gt;= 0, @endBalance, '' )&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=372</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=372"/>
		<updated>2025-02-21T12:36:17Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Test valid entries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or -1) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((($occupiedSeat=0)OR($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1)OR($occupiedSeat=-1)), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name AS 'Ressource', SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)), SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Date debut maintenance', '' AS 'Date fin maintenance', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name, booking.start_date AS 'Date debut maintenance', booking.end_date, TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),  TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer) represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS _tr(REPORT_MONTH), CONCAT(left_person.last_name, ' ', left_person.first_name) AS _tr(REPORT_FIRST_PLACE_PERSON), activity_type.name AS _tr(ACTIVITY_TYPE), sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS _tr(ACTIVITY_DURATION)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id=$personId)&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            \'S\', &lt;br /&gt;
            \'D\'&lt;br /&gt;
        ) AS _tr(ALONE_DC),&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
        business_field_comment.content AS _tr(COMMENT),&lt;br /&gt;
    ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_BEFORE_ACTIVITY), ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_AFTER_ACTIVITY)'&lt;br /&gt;
        )&lt;br /&gt;
        SEPARATOR ', '&lt;br /&gt;
    ),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON activity_type.id = flight.activity_type_id&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT business_field_content.category_id, business_field_content.content&lt;br /&gt;
        FROM business_field_content&lt;br /&gt;
        LEFT JOIN business_field ON business_field.id = business_field_content.business_field_id&lt;br /&gt;
        WHERE business_field.variable = \'activityComment\'&lt;br /&gt;
    ) AS business_field_comment ON business_field_comment.category_id = flight.id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = ', $year ,' AND flight_pilot.num = 0 AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM tank;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=371</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=371"/>
		<updated>2025-02-21T12:04:48Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Total Flight hours per pilot with total */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or NULL) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((('$occupiedSeat'=0)OR('$occupiedSeat'='')), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((('$occupiedSeat'=1)OR('$occupiedSeat'='')), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name AS 'Ressource', SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)), SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Date debut maintenance', '' AS 'Date fin maintenance', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name, booking.start_date AS 'Date debut maintenance', booking.end_date, TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),  TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer) represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS _tr(REPORT_MONTH), CONCAT(left_person.last_name, ' ', left_person.first_name) AS _tr(REPORT_FIRST_PLACE_PERSON), activity_type.name AS _tr(ACTIVITY_TYPE), sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS _tr(ACTIVITY_DURATION)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id=$personId)&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            \'S\', &lt;br /&gt;
            \'D\'&lt;br /&gt;
        ) AS _tr(ALONE_DC),&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
        business_field_comment.content AS _tr(COMMENT),&lt;br /&gt;
    ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_BEFORE_ACTIVITY), ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_AFTER_ACTIVITY)'&lt;br /&gt;
        )&lt;br /&gt;
        SEPARATOR ', '&lt;br /&gt;
    ),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON activity_type.id = flight.activity_type_id&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT business_field_content.category_id, business_field_content.content&lt;br /&gt;
        FROM business_field_content&lt;br /&gt;
        LEFT JOIN business_field ON business_field.id = business_field_content.business_field_id&lt;br /&gt;
        WHERE business_field.variable = \'activityComment\'&lt;br /&gt;
    ) AS business_field_comment ON business_field_comment.category_id = flight.id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = ', $year ,' AND flight_pilot.num = 0 AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM tank;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=370</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=370"/>
		<updated>2025-02-21T11:55:44Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Flights hours total per aircraft, per year and per month (for a given type of activity and profile) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or NULL) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((('$occupiedSeat'=0)OR('$occupiedSeat'='')), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((('$occupiedSeat'=1)OR('$occupiedSeat'='')), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name AS 'Ressource', SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)), SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Date debut maintenance', '' AS 'Date fin maintenance', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name, booking.start_date AS 'Date debut maintenance', booking.end_date, TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),  TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, -1: both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat='')), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat='')), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS _tr(REPORT_MONTH), CONCAT(left_person.last_name, ' ', left_person.first_name) AS _tr(REPORT_FIRST_PLACE_PERSON), activity_type.name AS _tr(ACTIVITY_TYPE), sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS _tr(ACTIVITY_DURATION)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id=$personId)&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            \'S\', &lt;br /&gt;
            \'D\'&lt;br /&gt;
        ) AS _tr(ALONE_DC),&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
        business_field_comment.content AS _tr(COMMENT),&lt;br /&gt;
    ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_BEFORE_ACTIVITY), ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_AFTER_ACTIVITY)'&lt;br /&gt;
        )&lt;br /&gt;
        SEPARATOR ', '&lt;br /&gt;
    ),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON activity_type.id = flight.activity_type_id&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT business_field_content.category_id, business_field_content.content&lt;br /&gt;
        FROM business_field_content&lt;br /&gt;
        LEFT JOIN business_field ON business_field.id = business_field_content.business_field_id&lt;br /&gt;
        WHERE business_field.variable = \'activityComment\'&lt;br /&gt;
    ) AS business_field_comment ON business_field_comment.category_id = flight.id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = ', $year ,' AND flight_pilot.num = 0 AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM tank;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=369</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=369"/>
		<updated>2025-02-21T11:55:27Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Flights hours total per aircraft, per year and per month (for a given type of activity and profile) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or NULL) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((('$occupiedSeat'=0)OR('$occupiedSeat'='')), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((('$occupiedSeat'=1)OR('$occupiedSeat'='')), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name AS 'Ressource', SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)), SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Date debut maintenance', '' AS 'Date fin maintenance', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name, booking.start_date AS 'Date debut maintenance', booking.end_date, TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),  TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, '-1': both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((($occupiedSeat=0) OR ($occupiedSeat=-1)), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((($occupiedSeat=1) OR ($occupiedSeat=-1)), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat='')), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat='')), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS _tr(REPORT_MONTH), CONCAT(left_person.last_name, ' ', left_person.first_name) AS _tr(REPORT_FIRST_PLACE_PERSON), activity_type.name AS _tr(ACTIVITY_TYPE), sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS _tr(ACTIVITY_DURATION)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id=$personId)&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            \'S\', &lt;br /&gt;
            \'D\'&lt;br /&gt;
        ) AS _tr(ALONE_DC),&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
        business_field_comment.content AS _tr(COMMENT),&lt;br /&gt;
    ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_BEFORE_ACTIVITY), ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_AFTER_ACTIVITY)'&lt;br /&gt;
        )&lt;br /&gt;
        SEPARATOR ', '&lt;br /&gt;
    ),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON activity_type.id = flight.activity_type_id&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT business_field_content.category_id, business_field_content.content&lt;br /&gt;
        FROM business_field_content&lt;br /&gt;
        LEFT JOIN business_field ON business_field.id = business_field_content.business_field_id&lt;br /&gt;
        WHERE business_field.variable = \'activityComment\'&lt;br /&gt;
    ) AS business_field_comment ON business_field_comment.category_id = flight.id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = ', $year ,' AND flight_pilot.num = 0 AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date&lt;br /&gt;
    '&lt;br /&gt;
)&lt;br /&gt;
FROM tank;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=AdminDoc3&amp;diff=364</id>
		<title>AdminDoc3</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=AdminDoc3&amp;diff=364"/>
		<updated>2024-12-10T10:40:07Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Reports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;''This page is dedicated to receive admin doc of release 3.0.''&lt;br /&gt;
&lt;br /&gt;
=Parameters=&lt;br /&gt;
Menu &amp;quot;Configuration/parameters&amp;quot;&lt;br /&gt;
==Account management==&lt;br /&gt;
===Currency pattern===&lt;br /&gt;
Currency pattern is built with the currency symbol defined by the user&lt;br /&gt;
&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!rowspan=&amp;quot;2&amp;quot; |Pattern||rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;|Symbol&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;|Separator||rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;|Example||rowspan=&amp;quot;2&amp;quot;|Some countries&lt;br /&gt;
|-&lt;br /&gt;
!|Decimal|||Thousand&lt;br /&gt;
|-&lt;br /&gt;
|$#,##0.00;$-#,##0.00||before||comma||dot||$-1,234.56||Defaut, USA, England, Yen&lt;br /&gt;
|-&lt;br /&gt;
|#,##0.00$;-#,##0.00$||after||comma||dot||-1,234.56$||Algeria, Maroc&lt;br /&gt;
|-&lt;br /&gt;
|€#.##0,00;€-#.##0,00||before||dot||comma||€-1.234,56||Italy, Belgium&lt;br /&gt;
|-&lt;br /&gt;
|#.##0,00€;-#.##0,00€||after||dot||comma||-1.234,56€||German, Spain, Portuguese&lt;br /&gt;
|-&lt;br /&gt;
|# ##0,00€;-# ##0,00€||after||comma||space||-1 234,56€||French, Russia&lt;br /&gt;
|-&lt;br /&gt;
|Fr#'##0.00;Fr-#'##0.00||before||dot||quote||Fr-1'234.56||Swiss&lt;br /&gt;
|-&lt;br /&gt;
|# ##0€00;-# ##0€00||colspan=&amp;quot;2&amp;quot;|decimal replaced by symbol||space||-1 234€56||&lt;br /&gt;
|-&lt;br /&gt;
|#,##0$00;-#,##0$00||colspan=&amp;quot;2&amp;quot;|decimal replaced by symbol||comma||-1,234$56||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
If you don't find yours, do not hesitate to advise us!&lt;br /&gt;
&lt;br /&gt;
=Create users=&lt;br /&gt;
To add an user you need first:&lt;br /&gt;
*To create groups (Users/Group) if needed&lt;br /&gt;
*Then you go to Users/Users list and you select &amp;quot;ADD AN USER&amp;quot;&lt;br /&gt;
If you see in the user list that some users are displayed on a red background, it means that the field Birthdate/Sex/Nationality are not filled.&lt;br /&gt;
&lt;br /&gt;
=Rights list=&lt;br /&gt;
&lt;br /&gt;
*Common user&lt;br /&gt;
**No auto logout : disables the auto-logout session of ~3 minutes (Useful function for guest/visitor account)&lt;br /&gt;
**Update own personal data : If user can edit some of his personal data (birthdate, nationality, sexe ...)&lt;br /&gt;
**Update own qualifications : allows for user to update himself his qualifications (For instructors. For pilots if the flying club doesn't want to manage those)&lt;br /&gt;
**Manage own qualifications limit : enables update of fields Identifier code, Grant date, Time limit depending if the qualification has those field on/off&lt;br /&gt;
**Aircraft availability management : allows to freeze an aircraft for maintenance or whatsover. It's done by booking the aircraft, an option will be available while doing that.&lt;br /&gt;
**Instructor availability management : allows to manage any instructor availability.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Booking&lt;br /&gt;
**Book alone : allows for user to book an aircraft without an instructor&lt;br /&gt;
**Book anyone : allows for user to book an aircraft for another one (solo booking and/or double one, depending of rights of this third-party. Useful function for the secretary.)&lt;br /&gt;
**Book instructor : allows for user to book an aircraft with an instructor&lt;br /&gt;
**Book unavailable instructor : allows for user to book an aircraft with an instructor even if this one is not available at the time gap (an alert message prevents the user. Useful function for instructors and secretary).&lt;br /&gt;
**Override minimum time limit to start a booking : allows for user to bypass the minimum time limit to start a booking&lt;br /&gt;
**Override date range limit : allows for user to bypass the data range limit&lt;br /&gt;
**Override number limit : allows for user to bypass the number limit&lt;br /&gt;
**Override booking by type : ?&lt;br /&gt;
**Notifiable for any reservation : enable booking functionalities like the option &amp;quot;receive any made booking by mail&amp;quot;&lt;br /&gt;
**See names on bookings : Explicit title (for guest/visitor accounts)&lt;br /&gt;
**See booking comments : Explicit title (for guest/visitor accounts)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Common admin&lt;br /&gt;
**Parameter management : allows to edit various parameters for OF like disabling/enabling flight, booking, accounting, etc ...&lt;br /&gt;
**Profile management : Explicit title, let this right to at least one profile (i.e : admin)&lt;br /&gt;
**User management : Explicit title&lt;br /&gt;
**Pool management : Explicit title, user pool&lt;br /&gt;
**Aircraft management : Explicit title&lt;br /&gt;
**Reports : allows to export some reports : member list, flight list, account list, etc ...&lt;br /&gt;
**Statistics management : allows to create home-made reports by writing SQL query.&lt;br /&gt;
**View statistics : allows to view home-made reports&lt;br /&gt;
**Logs management : allows to view logging archive&lt;br /&gt;
**Key management : if option is enabled, allows to manage key&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Flight management&lt;br /&gt;
**Input flight for oneself : Explicit title&lt;br /&gt;
**Flight filing for others : Explicit title&lt;br /&gt;
**Check and modify flights : Allows to view flight logs of anyone, appoint flights, check missing flight&lt;br /&gt;
**View aircraft log book : Explicit title&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Account management &lt;br /&gt;
**Account management : With others rights, allows to manager accounts (club, aircraft, member, etc)&lt;br /&gt;
**Input own payments : Explicit title&lt;br /&gt;
**Payment filing for others : Explicit title&lt;br /&gt;
**Modify payment or transfer date : Explicit title&lt;br /&gt;
**Input fueling repayment : Explicit title (seems not working at the moment)&lt;br /&gt;
**Check payments : allows to validate payments&lt;br /&gt;
**Get cash : Explicit title&lt;br /&gt;
**Manage own transfer : Explicit title&lt;br /&gt;
**Transfer from anyone to anyone : Explicit title&lt;br /&gt;
**Flight hours pricing : Explicit title&lt;br /&gt;
**Input pricing values : Explicit title&lt;br /&gt;
**Enter any non validated flow&lt;br /&gt;
**Validate any flow &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Stocks manager&lt;br /&gt;
**Stocks management : Allows to manage stocks types and stocks&lt;br /&gt;
**Stock level management : Allows to manage stocks level (what do we have, how many, at which date ...)&lt;br /&gt;
**Stock checking : Allows to check stock variation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Sales manager :&lt;br /&gt;
**Sale for everybody : Allows to manage sale types, pricing, stocks to sell, etc&lt;br /&gt;
**Purchase free sales : Allows to purchase item that aren't in free sale&lt;br /&gt;
**Purchase for others : Allows for user to do a purchase for someone else&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Purchases manager : allows to use purchase manager&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
*Budgets manager :&lt;br /&gt;
**Budgets management : Allows to manage budgets groups and budgets&lt;br /&gt;
**View synthesis : Allows to view the budget synthesis and account entries list of a budget&lt;br /&gt;
&lt;br /&gt;
=Create instructors=&lt;br /&gt;
*You check the instructor box (&amp;quot;Type of user&amp;quot; in the user form) to choosen users and you don't forget to specify the &amp;quot;Instructors Initials&amp;quot;&lt;br /&gt;
=Create aircrafts=&lt;br /&gt;
*You need first to create aircrafts type as needed (in Fleet/Aircraft types)&lt;br /&gt;
*Then you go to Fleet/Aircraft and you select &amp;quot;ADD AN AIRCRAFT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=Flight hours computation=&lt;br /&gt;
In all formula, due to difference with interpretation of decimal separator in various personnal computer, all values must to write without decimal separator, use X/Y to obtain correct value&lt;br /&gt;
&lt;br /&gt;
'''Do not forget that time is given in sexacentimal. So to convert in hours you have to divide by 600.'''&lt;br /&gt;
&lt;br /&gt;
 1 minute = 10 sexacentimals&lt;br /&gt;
 5 minutes = 50 sexacentimals&lt;br /&gt;
 1 hour = 60 minutes = 600 sexacentimals&lt;br /&gt;
&lt;br /&gt;
 1 hundredth of hour = 6 sexacentimals&lt;br /&gt;
 10 hundredth of hour (=1 tenth of hour) = 60 sexacentimals&lt;br /&gt;
&lt;br /&gt;
Example: for 100,10 $/h&lt;br /&gt;
 10010*%DURATION/60000&lt;br /&gt;
&lt;br /&gt;
 to round at 5 minutes : roundCeil(X,50)&lt;br /&gt;
&lt;br /&gt;
 to round with 10 hundredths : roundCeil(X,60)&lt;br /&gt;
&lt;br /&gt;
==Flight hour computation formula==&lt;br /&gt;
Authorized variables:&lt;br /&gt;
*[[CommonFormula#.AIRFIELD-ARRIVAL|%AIRFIELD_ARRIVAL]]&lt;br /&gt;
*[[CommonFormula#.AIRFIELD-DEPARTURE|%AIRFIELD_DEPARTURE]]&lt;br /&gt;
*[[CommonFormula#.DURATION|%DURATION]]&lt;br /&gt;
*[[CommonFormula#.COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[CommonFormula#.COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[CommonFormula#.EXTRAFIELDxx|%EXTRAFIELDxx]] except field type ''multiline_string''&lt;br /&gt;
&lt;br /&gt;
Authorized functions:&lt;br /&gt;
*[[CommonFormula#max.28a.2Cb.29|max(a,b)]]&lt;br /&gt;
*[[CommonFormula#min.28a.29|min(a,b)]]&lt;br /&gt;
*[[CommonFormula#abs.28a.2Cb.29|abs(a)]]&lt;br /&gt;
*[[CommonFormula#roundCeil.28a.2Cb.29|roundCeil(a,b)]]&lt;br /&gt;
&lt;br /&gt;
==Flight hour computation examples==&lt;br /&gt;
===Difference of the hours===&lt;br /&gt;
 %DURATION&lt;br /&gt;
===Difference of the counters===&lt;br /&gt;
 %COUNTER_ARRIVAL - %COUNTER_DEPARTURE&lt;br /&gt;
===Round difference of the hours at (top) 5 minutes===&lt;br /&gt;
 roundCeil(%DURATION, 50)&lt;br /&gt;
===Round difference of the hours at (bottom) 5 minutes===&lt;br /&gt;
 roundCeil(%DURATION - 40, 50)&lt;br /&gt;
===Round difference of the hours at (nearest) 5 minutes===&lt;br /&gt;
 roundCeil(%DURATION - 20, 50)&lt;br /&gt;
&lt;br /&gt;
===Difference of the counters plus 5 minutes===&lt;br /&gt;
 %COUNTER_ARRIVAL - %COUNTER_DEPARTURE + 50&lt;br /&gt;
===Round difference of the counters at 10 hundreth===&lt;br /&gt;
 roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 60)&lt;br /&gt;
===Greater between difference of the hours and difference of the counters===&lt;br /&gt;
 max(%DURATION, %COUNTER_ARRIVAL - %COUNTER_DEPARTURE)&lt;br /&gt;
===Greater between difference of the hours and round difference of the counters at 5 minutes===&lt;br /&gt;
 max(%DURATION,roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE, 50))&lt;br /&gt;
&lt;br /&gt;
===Difference of the counters rounded to the nearest 5 minutes===&lt;br /&gt;
roundCeil(%COUNTER_ARRIVAL - %COUNTER_DEPARTURE - 25, 50)&lt;br /&gt;
====Example of results====&lt;br /&gt;
{| {{prettytable}}&lt;br /&gt;
!input value!!output value&lt;br /&gt;
|-&lt;br /&gt;
|10||10&lt;br /&gt;
|-&lt;br /&gt;
|11||10&lt;br /&gt;
|-&lt;br /&gt;
|12||10&lt;br /&gt;
|-&lt;br /&gt;
|13||15&lt;br /&gt;
|-&lt;br /&gt;
|14||15&lt;br /&gt;
|-&lt;br /&gt;
|15||15&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Pricing management=&lt;br /&gt;
==Pricing management formula==&lt;br /&gt;
*[[CommonFormula#conditional_processing|conditional processing]]&lt;br /&gt;
*[[CommonFormula#conditional_processing_with_operator_OR.2FAND|conditional processing with operator OR/AND]]&lt;br /&gt;
&lt;br /&gt;
===Hours pricing===&lt;br /&gt;
Authorized variables:&lt;br /&gt;
*[[CommonFormula#.25ACCOUNT1|%ACCOUNT1]]&lt;br /&gt;
*[[CommonFormula#.25ACCOUNT2|%ACCOUNT2]]&lt;br /&gt;
*[[CommonFormula#.25ACCOUNTING_START_DATE|%ACCOUNTING_START_DATE]]&lt;br /&gt;
*[[CommonFormula#.25AIRFIELD_DEPARTURE|%AIRFIELD_DEPARTURE]]&lt;br /&gt;
*[[CommonFormula#.25AIRFIELD_ARRIVAL|%AIRFIELD_ARRIVAL]]&lt;br /&gt;
*[[CommonFormula#.25COUNTER_ARRIVAL|%COUNTER_ARRIVAL]]&lt;br /&gt;
*[[CommonFormula#.25COUNTER_DEPARTURE|%COUNTER_DEPARTURE]]&lt;br /&gt;
*[[CommonFormula#.25CURRENT_QUANTITY|%CURRENT_QUANTITY]]&lt;br /&gt;
*[[CommonFormula#.25CURRENT_UNIT_PRICE|%CURRENT_UNIT_PRICE]]&lt;br /&gt;
*[[CommonFormula#.25DURATION|%DURATION]]&lt;br /&gt;
*[[CommonFormula#.25ENTITY_TZ|%ENTITY_TZ]]&lt;br /&gt;
*[[CommonFormula#.25EXTRAFIELDxx|%EXTRAFIELDxx]]&lt;br /&gt;
*[[CommonFormula#.25PILOT|%PILOT]]&lt;br /&gt;
*[[CommonFormula#.25PILOT2|%PILOT2]]&lt;br /&gt;
*[[CommonFormula#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
*[[CommonFormula#.25START_DATE|%START_DATE]]&lt;br /&gt;
*[[CommonFormula#.25USER_TZ|%USER_TZ]]&lt;br /&gt;
&lt;br /&gt;
Authorized functions:&lt;br /&gt;
*[[CommonFormula#abs.28a.2Cb.29|abs(a)]]&lt;br /&gt;
*[[CommonFormula#changeTime.28.25SOME_DATE.2C_.27year.27.2C_.27month.27.2C_.27day.27.29|changeTime]]&lt;br /&gt;
*[[CommonFormula#convertTimezone.28.25SOME_DATE.2C_.25SOME_TZ1.2C_.25SOME_TZ2.29|convertTimezone]]&lt;br /&gt;
*[[CommonFormula#formatDate.28.27pattern.27.2C.25SOME_DATE.29|formatDate('pattern',%SOME_DATE)]]&lt;br /&gt;
*[[CommonFormula#getBalance.28a.29|getBalance(a,b)]]&lt;br /&gt;
*[[CommonFormula#getBirthdate.28.27person_id.27.29|getBirthdate('person id')]]&lt;br /&gt;
*[[CommonFormula#getFlowSumBetweenAccount.28.27accound_id_1.27.2C_.27account_id_2.27.2C_.27start_date.27.2C_.27end_date.27.29|getFlowSumBetweenAccount('accound id 1', 'account id 2', 'start date', 'end date')]]&lt;br /&gt;
*[[CommonFormula#getSumAccountBusinessField('business-field-id,-'person-id',-'date')|getSumAccountBusinessField('business field id', 'person id', 'date')]]&lt;br /&gt;
*[[CommonFormula#getValidityExpiredDate.28.27person_id.27.2C_.27validity_type_id.27.29|getValidityExpiredDate('person id', 'valididty type id')]]&lt;br /&gt;
*[[CommonFormula#getYearsFromDiffDate.28.27first_date.27.2C_.27second_date.27.29|getYearsFromDiffDate('first date', 'second date')]]&lt;br /&gt;
*[[CommonFormula#hasValidity.28.27person_id.27.2C_.27validity_type_id.27.29|hasValidity('person id', 'valididty type id')]]&lt;br /&gt;
*[[CommonFormula#max.28a.2Cb.29|max(a,b)]]&lt;br /&gt;
*[[CommonFormula#min.28a.29|min(a,b)]]&lt;br /&gt;
*[[CommonFormula#roundCeil.28a.2Cb.29|roundCeil(a,b)]]&lt;br /&gt;
*[[CommonFormula#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27_.29|sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position' )]]&lt;br /&gt;
*[[CommonFormula#sumFlightTime.28.25PILOT.2C_.27year.27.2C_.27month.27.2C_.27day.27.2C_.27hour.27.2C_.27minute.27.2C_.27position.27.2C_.27flight_type.27_.29|sumFlightTime(%PILOT, 'year', 'month', 'day', 'hour', 'minute', 'position', 'flight type')]]&lt;br /&gt;
*[[CommonFormula#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour(%PILOT, 'position', 'day','aircraft type')]]&lt;br /&gt;
*[[CommonFormula#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber(%PILOT, 'position', 'day', 'aircraft type')]]&lt;br /&gt;
*[[CommonFormula#sumPreviousFlightTime.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27endingDate.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumPreviousFlightTime(%PILOT, 'position', 'day', '%START_FLIGHT', 'flight type')]]&lt;br /&gt;
&lt;br /&gt;
===Sale pricing===&lt;br /&gt;
Authorized variables:&lt;br /&gt;
*[[CommonFormula#.25CURRENT_QUANTITY|%CURRENT_QUANTITY]]&lt;br /&gt;
*[[CommonFormula#.25CURRENT_UNIT_PRICE|%CURRENT_UNIT_PRICE]]&lt;br /&gt;
*[[CommonFormula#.25ENTITY_TZ|%ENTITY_TZ]]&lt;br /&gt;
*[[CommonFormula#.25NOW_DATE|%NOW_DATE]]&lt;br /&gt;
*[[CommonFormula#.25PRODUCT_QUANTITY|%PRODUCT_QUANTITY]]&lt;br /&gt;
*[[CommonFormula#.25QTY|%QTY]]&lt;br /&gt;
*[[CommonFormula#.25START_DATE|%START_DATE]]&lt;br /&gt;
*[[CommonFormula#.25UNIT_PRICE_VALUE|%UNIT_PRICE_VALUE]]&lt;br /&gt;
*[[CommonFormula#.25USER_TZ|%USER_TZ]]&lt;br /&gt;
*[[CommonFormula#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
Authorized functions:&lt;br /&gt;
*[[CommonFormula#abs.28a.2Cb.29|abs(a)]]&lt;br /&gt;
*[[CommonFormula#addTime.28.25SOME_DATE.2C_.25SOME_TZ.29|addTime(%SOME_DATE, %SOME_TZ)]]&lt;br /&gt;
*[[CommonFormula#changeTime.28.25SOME_DATE.2C_.27year.27.2C_.27month.27.2C_.27day.27.29|changeTime]]&lt;br /&gt;
*[[CommonFormula#convertTimezone.28.25SOME_DATE.2C_.25SOME_TZ1.2C_.25SOME_TZ2.29|convertTimezone]]&lt;br /&gt;
*[[CommonFormula#formatDate.28.27pattern.27.2C.25SOME_DATE.29|formatDate('pattern',%SOME_DATE)]]&lt;br /&gt;
*[[CommonFormula#getBalance.28a.29|getBalance(a,b)]]&lt;br /&gt;
*[[CommonFormula#getBirthdate.28.27person_id.27.29|getBirthdate('person id')]]&lt;br /&gt;
*[[CommonFormula#getYearsFromDiffDate.28.27first_date.27.2C_.27second_date.27.29|getYearsFromDiffDate('first date', 'second date')]]&lt;br /&gt;
*[[CommonFormula#hasValidity.28.27person_id.27.2C_.27validity_type_id.27.29|hasValidity('person id', 'valididty type id')]]&lt;br /&gt;
*[[CommonFormula#min.28a.29|min(a,b)]]&lt;br /&gt;
*[[CommonFormula#max.28a.2Cb.29|max(a,b)]]&lt;br /&gt;
*[[CommonFormula#roundCeil.28a.2Cb.29|roundCeil(a,b)]]&lt;br /&gt;
*[[CommonFormula#subTime.28.25SOME_DATE.2C_.25SOME_TZ.29|subTime(%SOME_DATE, %SOME_TZ)]]&lt;br /&gt;
&lt;br /&gt;
==Allowed timezone==&lt;br /&gt;
[[allowed_timezone|See here]]&lt;br /&gt;
&lt;br /&gt;
==Pricing management example==&lt;br /&gt;
*An aircraft with a cost of 94 € per flight hours, will have:&lt;br /&gt;
 94*%DURATION/600&lt;br /&gt;
*An aircraft with a cost of 110 € per &amp;quot;counter&amp;quot; hours, will have:&lt;br /&gt;
 110*(%COUNTER_ARRIVAL-%COUNTER_DEPARTURE)/600&lt;br /&gt;
*When it's week-end, the cost (100 €) per flight hours is cut to half, the formula will be:&lt;br /&gt;
 (formatDate('%w', %START_DATE) == 0 OR formatDate('%w', %START_DATE) == 6) ? 50*%DURATION/600 : 100*%DURATION/600&lt;br /&gt;
&lt;br /&gt;
=Validity type=&lt;br /&gt;
You may define your own validity types (licence, medical, etc.)&lt;br /&gt;
&lt;br /&gt;
For doing that, you got several parameters available:&lt;br /&gt;
==Time limitation==&lt;br /&gt;
For validity types with a time limitation (pilots will have a date to set for this kind of validity)&lt;br /&gt;
==Identifier code management==&lt;br /&gt;
Add a field for entering the id of the validity type attached to the pilot&lt;br /&gt;
==Obtaining date management==&lt;br /&gt;
Add a date field for the obtention date of the qvalidity type&lt;br /&gt;
==Reserved to instructors==&lt;br /&gt;
Validity types reserved to instructors&lt;br /&gt;
==Blocking validity==&lt;br /&gt;
Validity types will be blocking for flight (not for booking)&lt;br /&gt;
==Recent experience: &amp;quot;experience formula&amp;quot;==&lt;br /&gt;
You may create validity types checking recent experience like hours or landing number.&lt;br /&gt;
&lt;br /&gt;
Like other validity types, those ones are managed in the validity type manager (admin menu: Users/Validities types)&lt;br /&gt;
&lt;br /&gt;
Formula checking recent experience have to be set in the &amp;quot;experience formula&amp;quot; column.&lt;br /&gt;
&lt;br /&gt;
In order to make them work after inputting a flight, you have to set on which flight type and/or aircraft type you want the check to be triggered.&lt;br /&gt;
For flight type, go to admin menu: flights/flight types then go to section '''Required validity type(if alone onboard) for a given flight type''' and check the recent experience.&lt;br /&gt;
For aircraft type, go to admin menu: fleet/aircraft types then go to section '''Aircraft types'''. In validity type column, click onto the image that gonna lead you to a new page then check the recent experience.&lt;br /&gt;
&lt;br /&gt;
==Validity type formula==&lt;br /&gt;
Authorized variables:&lt;br /&gt;
*[[CommonFormula#.25PILOT|%PILOT]]&lt;br /&gt;
&lt;br /&gt;
Authorized functions:&lt;br /&gt;
*[[CommonFormula#sumFlightHour.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumFlightHour('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')]]&lt;br /&gt;
*[[CommonFormula#sumLandingNumber.28.27pilot_id.27.2C_.27position.27.2C_.27day.27.2C_.27aircraft_type_1.27_.2C_.27aircraft_type_2.27.2C_.27aircraft_type_X.27.29|sumLandingNumber('pilot id', 'position', 'day', 'aircraft type 1' , 'aircraft type 2', 'aircraft type X')]]&lt;br /&gt;
&lt;br /&gt;
=Accounting=&lt;br /&gt;
[[Account|Accountancy tips and tricks]]&lt;br /&gt;
==Accounting formula==&lt;br /&gt;
* Sales variables&lt;br /&gt;
::Authorized variables:&lt;br /&gt;
::*[[CommonFormula#.25QTY|%QTY]]&lt;br /&gt;
&lt;br /&gt;
* Account Export variables&lt;br /&gt;
::Authorized variables:&lt;br /&gt;
::*[[CommonFormula#.25ACCOUNT_TYPE|%ACCOUNT_TYPE]]&lt;br /&gt;
::*[[CommonFormula#.25AUTO_INCREMENT|%AUTO_INCREMENT]]&lt;br /&gt;
::*[[CommonFormula#.25AUTHENTICATION_LOGIN|%AUTHENTICATION_LOGIN]]&lt;br /&gt;
::*[[CommonFormula#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
::*[[CommonFormula#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
::*[[CommonFormula#.25MEMBER_NUM|%MEMBER_NUM]]&lt;br /&gt;
::*[[CommonFormula#.25RESOURCE_ID|%RESOURCE_ID]]&lt;br /&gt;
::*[[CommonFormula#.25RESOURCE_NAME|%RESOURCE_NAME]]&lt;br /&gt;
::*[[CommonFormula#.25USER_ID|%USER_ID]]&lt;br /&gt;
&lt;br /&gt;
::Authorized functions:&lt;br /&gt;
::*[[CommonFormula#.25substr.28string.2Ca.2Cb.29|substr(string,a,b)]]&lt;br /&gt;
&lt;br /&gt;
==Accounting example==&lt;br /&gt;
&lt;br /&gt;
===Price item===&lt;br /&gt;
  160/100*%QTY&lt;br /&gt;
===&amp;quot;THING&amp;quot; + unique value for each account===&lt;br /&gt;
  THING+%AUTO_INCREMENT&lt;br /&gt;
===711 + 3 first letters of login + unique value===&lt;br /&gt;
  711+substr(%AUTHENTICATION_LOGIN, 0, 3)+%AUTO_INCREMENT&lt;br /&gt;
===655 + 2nd letter of login + 3rd letter of login===&lt;br /&gt;
  655+substr(%AUTHENTICATION_LOGIN, 1, 2)&lt;br /&gt;
=Alert email=&lt;br /&gt;
The goal is to send a warning email to members whose theirs accounts is below the required threshold.&lt;br /&gt;
&lt;br /&gt;
*Go to Settings/Parameters&lt;br /&gt;
*Then scroll down to Account management form&lt;br /&gt;
**Set the balance threshold&lt;br /&gt;
**Choose the frequency recall of the email&lt;br /&gt;
**Set the content of the warning email&lt;br /&gt;
&lt;br /&gt;
Authorized variables for email content:&lt;br /&gt;
*[[CommonFormula#.25PILOT|%PILOT]]&lt;br /&gt;
*[[CommonFormula#.25LASTNAME|%LASTNAME]]&lt;br /&gt;
*[[CommonFormula#.25FIRSTNAME|%FIRSTNAME]]&lt;br /&gt;
*[[CommonFormula#.25NOWDATE|%NOWDATE]]&lt;br /&gt;
*[[CommonFormula#.25USER_TZ|%USER_TZ]]&lt;br /&gt;
*[[CommonFormula#.25ENTITY_TZ|%ENTITY_TZ]]&lt;br /&gt;
&lt;br /&gt;
Authorized functions for email content:&lt;br /&gt;
*formatDate&lt;br /&gt;
*addTime&lt;br /&gt;
*subTime&lt;br /&gt;
*[[CommonFormula#getBalance.28a.29|getBalance(a)]]&lt;br /&gt;
*[[CommonFormula#getAccount.28a.2C_.25PILOT.29|getAccount(a, %PILOT)]]&lt;br /&gt;
&lt;br /&gt;
=Aircraft Type=&lt;br /&gt;
==Tank==&lt;br /&gt;
*Goal: allow to an admin to create as many tanks (by aircraft type) as he needs.&lt;br /&gt;
*Use: for each flight, the pilot would be able to say which quantity has been added for each tank created by the admin, before and/or after the flight.&lt;br /&gt;
===How to create a tank===&lt;br /&gt;
*Go to Fleet/Aircraft types&lt;br /&gt;
*then action &amp;quot;modify&amp;quot; for a choosen aircraft type&lt;br /&gt;
*At the bottom of the page (below &amp;quot;Tank&amp;quot; title):&lt;br /&gt;
**Fill the &amp;quot;Tank&amp;quot; text area with the choosen name (ex: &amp;quot;main tank&amp;quot;)&lt;br /&gt;
**Choose a fuel type and an unit&lt;br /&gt;
**Clic on the &amp;quot;Add&amp;quot; button&lt;br /&gt;
&lt;br /&gt;
=Reports=&lt;br /&gt;
Admin are allowed to create their own database SQL extract and to see them on their browser or to save them in an CSV file via the &amp;quot;REPORTS&amp;quot; menu.&lt;br /&gt;
==Get the list of members whom had subscribed this year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT first_name,last_name FROM authentication&lt;br /&gt;
RIGHT JOIN member ON member.id=authentication.id WHERE year(member.subscription)=$year&lt;br /&gt;
ORDER BY last_name,first_name&amp;lt;/sql&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=User import=&lt;br /&gt;
You can import member via a CSV file (see details in the concerned page). Here below some particularities with the import file :&lt;br /&gt;
*About sex : use M for male and F for female. Others characters and no value mean undefined sex.&lt;br /&gt;
*About dates : allowed formats are YYYY-MM-DD and DD-MM-YYYY. D represents the day as a two-digits number, M represents the month as a two-digits number and Y represents the year as a four-digits number. In case you specify a bad format, the import will end at the current line where the error was found, leaving a red message. The current member and the following won't be imported.&lt;br /&gt;
*About nationality, use code id. To get code id of your nationality, check [[nationality|here]].&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=347</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=347"/>
		<updated>2024-11-22T13:10:32Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Flight log book */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or NULL) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((('$occupiedSeat'=0)OR('$occupiedSeat'='')), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((('$occupiedSeat'=1)OR('$occupiedSeat'='')), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name AS 'Ressource', SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)), SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Date debut maintenance', '' AS 'Date fin maintenance', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name, booking.start_date AS 'Date debut maintenance', booking.end_date, TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),  TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, '': both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((('$occupiedSeat'=0) OR ('$occupiedSeat'='')), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((('$occupiedSeat'=1) OR ('$occupiedSeat'='')), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat='')), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat='')), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS Mois, CONCAT(left_person.last_name, ' ', left_person.first_name) AS 'Personne en première place', activity_type.name AS 'Type d\'activité', sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS 'Durée'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id='$personId')&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            \'S\', &lt;br /&gt;
            \'D\'&lt;br /&gt;
        ) AS _tr(ALONE_DC),&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id = activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
        business_field_comment.content AS _tr(COMMENT),&lt;br /&gt;
	',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_BEFORE_ACTIVITY), ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS _tr(',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET_A1'&lt;br /&gt;
                WHEN 3 THEN 'OIL'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'DIESEL'&lt;br /&gt;
		        WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'ELEC'&lt;br /&gt;
            END,&lt;br /&gt;
            '_AFTER_ACTIVITY)'&lt;br /&gt;
        )&lt;br /&gt;
        SEPARATOR ', '&lt;br /&gt;
	),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON (activity_type.id = flight.activity_type_id)&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT business_field_content.category_id, business_field_content.content&lt;br /&gt;
        FROM business_field_content&lt;br /&gt;
        LEFT JOIN business_field ON business_field.id = business_field_content.business_field_id&lt;br /&gt;
        WHERE business_field.variable = \'activityComment\'&lt;br /&gt;
    ) AS business_field_comment ON business_field_comment.category_id = flight.id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = ', $year ,' AND flight_pilot.num = 0 AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date&lt;br /&gt;
	'&lt;br /&gt;
)&lt;br /&gt;
FROM tank;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=346</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=346"/>
		<updated>2024-11-21T12:44:17Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Flight log book */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or NULL) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((('$occupiedSeat'=0)OR('$occupiedSeat'='')), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((('$occupiedSeat'=1)OR('$occupiedSeat'='')), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name AS 'Ressource', SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)), SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Date debut maintenance', '' AS 'Date fin maintenance', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name, booking.start_date AS 'Date debut maintenance', booking.end_date, TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),  TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, '': both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((('$occupiedSeat'=0) OR ('$occupiedSeat'='')), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((('$occupiedSeat'=1) OR ('$occupiedSeat'='')), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat='')), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat='')), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS Mois, CONCAT(left_person.last_name, ' ', left_person.first_name) AS 'Personne en première place', activity_type.name AS 'Type d\'activité', sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS 'Durée'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id='$personId')&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            &amp;quot;S&amp;quot;, &lt;br /&gt;
            &amp;quot;D&amp;quot;&lt;br /&gt;
        ) AS &amp;quot;Solo / DC&amp;quot;,&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id = activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
        business_field_comment.content AS _tr(COMMENT), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS `',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET A1'&lt;br /&gt;
                WHEN 3 THEN 'Huile'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'GAZOLE'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'électrique'&lt;br /&gt;
            END,&lt;br /&gt;
            ' : ajout avant`, ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS `',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET A1'&lt;br /&gt;
                WHEN 3 THEN 'Huile'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'GAZOLE'&lt;br /&gt;
		WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'électrique'&lt;br /&gt;
            END,&lt;br /&gt;
            ' : ajout après`'&lt;br /&gt;
        )&lt;br /&gt;
    SEPARATOR ', '),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON (activity_type.id = flight.activity_type_id)&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT business_field_content.category_id, business_field_content.content&lt;br /&gt;
        FROM business_field_content&lt;br /&gt;
        LEFT JOIN business_field ON business_field.id = business_field_content.business_field_id&lt;br /&gt;
        WHERE business_field.variable = \'activityComment\'&lt;br /&gt;
    ) AS business_field_comment ON business_field_comment.category_id = flight.id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = ', $year ,'&lt;br /&gt;
    AND flight_pilot.num = 0&lt;br /&gt;
    AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date'&lt;br /&gt;
)&lt;br /&gt;
FROM tank&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
	<entry>
		<id>https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=345</id>
		<title>Export generator 4</title>
		<link rel="alternate" type="text/html" href="https://doc-en.openflyers.com/index.php?title=Export-generator-4&amp;diff=345"/>
		<updated>2024-11-14T14:17:30Z</updated>

		<summary type="html">&lt;p&gt;Lelhidam: /* Flight log book */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Introduction=&lt;br /&gt;
The goal of this page is to propose a list of statistic generation queries (SQL).&lt;br /&gt;
&lt;br /&gt;
Do not forget to read the [[OpenFlyers SQL stored functions and procedures]] page.&lt;br /&gt;
&lt;br /&gt;
Please note that you can make &amp;quot;public&amp;quot; a report, ie. allows standard users to see and interact with it.&lt;br /&gt;
&lt;br /&gt;
==Business field==&lt;br /&gt;
&lt;br /&gt;
For more flexibility, business field can be defined by the user.&lt;br /&gt;
&lt;br /&gt;
Two business field types are available:&lt;br /&gt;
*&amp;quot;external parameters&amp;quot; of following types:&lt;br /&gt;
**Date&lt;br /&gt;
**Date and time&lt;br /&gt;
**Month&lt;br /&gt;
**Text string&lt;br /&gt;
**Time&lt;br /&gt;
**Whole number&lt;br /&gt;
**Year&lt;br /&gt;
*database parameters (dbObject::something or dbObjectMulti::something Value type) advanced options to access to the database field&lt;br /&gt;
&lt;br /&gt;
===[[OF_doc4-fr::Gestion-des-rapports#Ajouter-un-champ-dans-le-formulaire-des-rapports|Business field creation]]===&lt;br /&gt;
*Go to Menu '''Admin &amp;gt; Reports &amp;gt; Custom reports &amp;gt; Business Field(s)'''&lt;br /&gt;
In the bottom line add &lt;br /&gt;
*Fill the '''name''' field with a name that will be use within the SQL queries (prefixed with the $ character)&lt;br /&gt;
*Fill the '''label''' field with a name used to describe the parameter as you want it to appear within the export query form.&lt;br /&gt;
*Choose a '''Value type''' (the most common are at the beginning of the list).&lt;br /&gt;
*Click on &amp;quot;Add&amp;quot;&lt;br /&gt;
Then within your SQL query, you may add this parameter which will be replace by the value chosen by the user filling the export form.&lt;br /&gt;
&lt;br /&gt;
If you define a parameter as a database parameters (for example dbObject::Person) then the form will display a combo with the list of users and your parameter will be replace by the id integer of the chosen person.&lt;br /&gt;
&lt;br /&gt;
===Business field creation examples===&lt;br /&gt;
We create a new business field for the current year:&lt;br /&gt;
*Name: $year &lt;br /&gt;
*Label: Year&lt;br /&gt;
*Value type: Year&lt;br /&gt;
&lt;br /&gt;
Parameter Year must be filled in '''Reports/View''' form before to call the query (by default current year is filled when you call the page)&lt;br /&gt;
&lt;br /&gt;
We create a new business field to list the reservation of a resource:&lt;br /&gt;
*Name: $resourceId&lt;br /&gt;
*Label: Resource&lt;br /&gt;
*Value type: dbObject::Resource&lt;br /&gt;
Then in '''Admin/Reports''' we create a new query labeled &amp;quot;Aircraft booking&amp;quot; with the following query:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM booking WHERE booking.resource_id=$resourceId&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To use this report, we just have to select a &amp;quot;Resource&amp;quot; in the '''Reports/View''' form, to check &amp;quot;Resource booking&amp;quot; then to click on &amp;quot;View&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=SQL tips and tricks=&lt;br /&gt;
==Return only last entry==&lt;br /&gt;
Example with last entry from variable #1 in variable_value table:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM `variable_value` WHERE variable_id=1 ORDER BY start_date DESC  LIMIT 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return a user list telling if each user has a profile A, B, C, etc.==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    person.first_name,&lt;br /&gt;
    person.last_name,&lt;br /&gt;
    IF(person.profile &amp;amp; 1, 'Yes', 'No') AS 'Profile A',&lt;br /&gt;
    IF(person.profile &amp;amp; 2, 'Yes', 'No') AS 'Profile B',&lt;br /&gt;
    IF(person.profile &amp;amp; 4, 'Yes', 'No') AS 'Profile C'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE activated=1;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Return the whole content of a given table==&lt;br /&gt;
Example with table &amp;quot;profile&amp;quot;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT * FROM profile;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This type of SELECT does not work within OpenFlyers to access restricted table like the '''person''' table&lt;br /&gt;
&lt;br /&gt;
==Test valid entries==&lt;br /&gt;
For business fields that are text inputs, any entry can be submitted and added to SQL query. In order to test valid entries, it is recommended to use the '''IF''' statement in the '''WHERE''' statement.&lt;br /&gt;
&lt;br /&gt;
Per example, $occupiedSeat can have following values (0, 1 or NULL) :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT *&lt;br /&gt;
FROM flight_pilot&lt;br /&gt;
WHERE &lt;br /&gt;
(&lt;br /&gt;
    IF((('$occupiedSeat'=0)OR('$occupiedSeat'='')), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((('$occupiedSeat'=1)OR('$occupiedSeat'='')), 1, -1) = flight_pilot.num&lt;br /&gt;
)&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=French administration Examples=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=1)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total on non-instruction with specific activity type/profile==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$activityTypeId''' of '''dbOjectMulti::ActivityType''' value type&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0&lt;br /&gt;
          AND ( activity_type.id IN ($activityTypeId) OR '' IN ($activityTypeId) )&lt;br /&gt;
          AND flight.id NOT IN (SELECT flight_id FROM flight_pilot WHERE num=1)&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flightWithActivityType.id AND flight_pilot.num=0)&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT person.*&lt;br /&gt;
        FROM person&lt;br /&gt;
        LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
        WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
          AND person.activated=1&lt;br /&gt;
        GROUP BY person.id&lt;br /&gt;
    ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id)&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE personWithProfile.id IS NOT NULL&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Users with a specific validity without expiration date==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT person.first_name, person.last_name, validity_type.name AS 'Validite'&lt;br /&gt;
FROM validity&lt;br /&gt;
LEFT JOIN validity_type ON validity.validity_type_id=validity_type.id&lt;br /&gt;
LEFT JOIN person ON person.id=validity.person_id&lt;br /&gt;
WHERE ( validity_type_id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND expire_date IS NULL&lt;br /&gt;
  AND person.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings at the base airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT only_base.sum AS _tr(FLIGHT_LANDING_NUMBER_WITH_TAKEOFF_AND_LANDING_AT_THE_BASE), all_landing.sum AS _tr(REPORT_NUMBER_LANDING_BASED_AIRFIELD) FROM &lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) AND ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS only_base,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(flight.landing_number) AS sum&lt;br /&gt;
FROM flight, structure&lt;br /&gt;
WHERE ( flight.arrival_icao_id = structure.icao ) AND YEAR(start_date) = $year) AS all_landing;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield==&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT COUNT(*) AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE ( ( flight.departure_icao_id != structure.icao ) OR( flight.arrival_icao_id != structure.icao ) ) AND( flight.departure_icao_id != structure.icao ) AND YEAR(start_date) = $year&lt;br /&gt;
    UNION&lt;br /&gt;
    SELECT SUM(landing_number) * 2 AS movement&lt;br /&gt;
    FROM flight, structure&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of movements on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(movement) AS 'Movement'&lt;br /&gt;
 FROM (&lt;br /&gt;
     SELECT COUNT(*) AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE (&lt;br /&gt;
         ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
         OR&lt;br /&gt;
         ( flight.arrival_icao_id != structure.icao)&lt;br /&gt;
     )&lt;br /&gt;
     AND ( flight.departure_icao_id != structure.icao)&lt;br /&gt;
     AND YEAR(flight.start_date) = 2019&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
     UNION&lt;br /&gt;
SELECT SUM(flight.landing_number)*2 AS movement&lt;br /&gt;
     FROM structure, flight&lt;br /&gt;
     LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id)&lt;br /&gt;
     LEFT JOIN (&lt;br /&gt;
         SELECT person.*&lt;br /&gt;
         FROM person&lt;br /&gt;
         LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
         WHERE ( profile.id IN ($profileId) OR '' IN ($profileId) )&lt;br /&gt;
           AND person.activated=1&lt;br /&gt;
         GROUP BY person.id&lt;br /&gt;
     ) AS personWithProfile ON (personWithProfile.id=flight_pilot.pilot_id AND flight_pilot.num=0)&lt;br /&gt;
     WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
     AND flight.departure_icao_id = structure.icao&lt;br /&gt;
     AND flight.arrival_icao_id = structure.icao&lt;br /&gt;
     AND personWithProfile.id IS NOT NULL&lt;br /&gt;
 ) AS tmp_movement&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of take-off and landings on based airfield on specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT SUM(flight.landing_number) * 2 AS 'Movement'&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN flight_pilot ON ( flight_pilot.flight_id = flight.id )&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile &amp;amp; profile.id&lt;br /&gt;
    WHERE (profile.id IN($profileId) OR '-' IN($profileId)) AND person.activated = 1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON ( personWithProfile.id = flight_pilot.pilot_id AND flight_pilot.num = 0 )&lt;br /&gt;
WHERE personWithProfile.id IS NOT NULL AND YEAR(flight.start_date) = $year AND flight.departure_icao_id = structure.icao AND flight.arrival_icao_id = structure.icao&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of movements on based airfield==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS nb_flight&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON flight.departure_icao_id = location.icao_name&lt;br /&gt;
WHERE ( flight.departure_icao_id = structure.icao ) OR( flight.arrival_icao_id = structure.icao ) AND departure_icao_id != arrival_icao_id AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY icao_name&lt;br /&gt;
ORDER BY nb_flight DESC &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==User flying without validity==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(person.last_name, ' ', person.first_name) AS _tr(PILOT),&lt;br /&gt;
    validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight_type_mandatory_validity_type&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id = flight_type_mandatory_validity_type.activity_type_id&lt;br /&gt;
LEFT JOIN flight ON flight.activity_type_id &amp;amp; activity_type.id&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type ON resource.resource_type_id = resource_type.id&lt;br /&gt;
LEFT JOIN aircraft_type_validity_type ON resource_type.id = aircraft_type_validity_type.aircraft_type_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id = flight_type_mandatory_validity_type.validity_type_id OR validity_type.id = aircraft_type_validity_type.validity_type_id)&lt;br /&gt;
LEFT JOIN validity ON validity_type.id = validity.validity_type_id AND person.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
WHERE flight.airborne = 0&lt;br /&gt;
  AND validity_type.id IS NOT NULL&lt;br /&gt;
  AND validity_type.experience_formula IS NULL&lt;br /&gt;
  AND validity.validity_type_id IS NULL&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY person.id, validity_type.id&lt;br /&gt;
ORDER BY `_tr(PILOT)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN aircraft AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt; X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of pilots who have flown less than X hours during last Y days on aircraft type Z==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT CONCAT(au.last_name, ' ', au.first_name) AS pilot, TIME_FORMAT( SEC_TO_TIME( SUM(f.duration)*6 ), '%H:%i' ) AS total_time&lt;br /&gt;
FROM flight AS f&lt;br /&gt;
RIGHT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
LEFT JOIN resource AS ai ON ai.id = f.aircraft_id&lt;br /&gt;
LEFT JOIN resource_type AS at ON ai.resource_type_id = at.id&lt;br /&gt;
LEFT JOIN person AS au ON fp.pilot_id = au.id&lt;br /&gt;
WHERE f.airborne = 0&lt;br /&gt;
  AND start_date BETWEEN NOW() - INTERVAL Y DAY AND NOW()&lt;br /&gt;
  AND at.id IN ( Z1, Z2, Z3, Z... )&lt;br /&gt;
GROUP BY au.id&lt;br /&gt;
HAVING SUM(f.duration)/600 &amp;lt;= X&lt;br /&gt;
ORDER BY pilot&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Pilots without flight in the last X months==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$numberMonth''' should be defined first and should be of '''integer''' value type. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    person.last_name, person.first_name,&lt;br /&gt;
    IFNULL((SELECT CONCAT(DATE_FORMAT( f1.start_date, '%d/%m/%Y' ),' ', resource.name,' Duration: ', &lt;br /&gt;
               TIME_FORMAT(SEC_TO_TIME(f1.duration*6 ) ,'%H h %i'))&lt;br /&gt;
            FROM flight AS f1&lt;br /&gt;
            LEFT JOIN flight_pilot AS fp ON fp.flight_id=f1.id &lt;br /&gt;
            LEFT JOIN resource ON resource.id=f1.aircraft_id&lt;br /&gt;
            WHERE fp.pilot_id=person.id &lt;br /&gt;
            ORDER BY f1.start_date DESC LIMIT 1),'UNKNOWN') AS 'Last flight'&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE person.activated=1&lt;br /&gt;
AND person.id NOT IN (&lt;br /&gt;
    SELECT person2.id&lt;br /&gt;
    FROM flight AS f&lt;br /&gt;
    LEFT JOIN flight_pilot AS fp ON fp.flight_id=f.id&lt;br /&gt;
    LEFT JOIN person AS person2 ON person2.id=fp.pilot_id&lt;br /&gt;
    WHERE f.airborne = 0 AND f.start_date BETWEEN NOW() - INTERVAL IF($numberMonth='', 1, $numberMonth*30) DAY AND NOW()&lt;br /&gt;
    GROUP BY person2.id HAVING SUM(f.duration)/600 &amp;gt; 0&lt;br /&gt;
)&lt;br /&gt;
ORDER BY person.last_name, person.first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total user per age profile validity: Number of men, women over and under X years for profile P, validity V up to date for year A==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( personWithProfile.sex=0, _tr(SEX_MALE_INITIAL), IF( personWithProfile.sex=1, _tr(SEX_FEMALE_INITIAL), _tr(UNDEFINED)) ) AS _tr(SEX),&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= $age ) , _tr(YES), _tr(NO)) AS _tr(ADULT),&lt;br /&gt;
    COUNT(DISTINCT personWithProfile.id) AS _tr(NUMBER)  &lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS personWithProfile&lt;br /&gt;
LEFT JOIN validity ON personWithProfile.id = validity.person_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE ((validity_type.id IN ($validityTypeId) AND validity.expire_date &amp;gt;= '$year-12-31') OR '-' IN ($validityTypeId))&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY `_tr(SEX)`, `_tr(ADULT)`&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of landings per pilot, per resource==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT last_name as &amp;quot;Last_name&amp;quot;, first_name as &amp;quot;First_name&amp;quot;,&lt;br /&gt;
 &lt;br /&gt;
(IF(DATE(valid.grant_date) &amp;lt; date(NOW()),'B', 'E')) as 'S',&lt;br /&gt;
&lt;br /&gt;
-- (IF(DATE(valid.grant_date) &amp;lt; date(NOW()),valid_typ.name, 'Eleve')) as 'S2',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS atterrissages,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 1&lt;br /&gt;
AND flight.aircraft_id = 18&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KT,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 10 &lt;br /&gt;
AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS QR,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 2&lt;br /&gt;
AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS KH,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
-- AND flight.aircraft_id = 3&lt;br /&gt;
AND flight.aircraft_id = 4&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS XF,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND (flight.aircraft_id = 2 OR flight.aircraft_id = 3 OR flight.aircraft_id = 4 OR flight.aircraft_id = 18)&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR400,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 23&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS DR500,&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 8&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'MC-IP',&lt;br /&gt;
&lt;br /&gt;
(SELECT SUM(landing_number) FROM flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
WHERE flight_pilot.pilot_id = a.id &lt;br /&gt;
AND flight.aircraft_id = 21&lt;br /&gt;
AND flight.start_date BETWEEN NOW() - INTERVAL 3 MONTH AND NOW()) AS 'CAP10-DL'&lt;br /&gt;
&lt;br /&gt;
FROM person a&lt;br /&gt;
&lt;br /&gt;
LEFT JOIN profile AS p1 ON (a.profile &amp;amp; p1.id)&lt;br /&gt;
LEFT JOIN validity valid ON valid.person_id = a.id&lt;br /&gt;
LEFT JOIN validity_type valid_typ ON valid_typ.id = valid.validity_type_id&lt;br /&gt;
&lt;br /&gt;
WHERE YEAR(grant_date) &amp;gt;= YEAR(NOW())&lt;br /&gt;
AND a.activated=1 AND p1.name='Pilot' &lt;br /&gt;
&lt;br /&gt;
GROUP BY last_name, first_name&lt;br /&gt;
ORDER BY last_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours without up to date validities==&lt;br /&gt;
&lt;br /&gt;
*Variable '''$year'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     DATE_FORMAT(start_date, '%d %m %Y' ) AS _tr(DATE),&lt;br /&gt;
     CONCAT(person.last_name, ' ', person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
     IF ( (SELECT COUNT(*) FROM flight_pilot AS tmp_flight_pilot WHERE flight_pilot.flight_id=tmp_flight_pilot.flight_id AND tmp_flight_pilot.num=1)=0, 'Solo', 'DC' ) AS DC,&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     sexa2HoursMinute(duration) AS _tr(DURATION),&lt;br /&gt;
     activity_type.name AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     validity_type.name AS _tr(VALIDITY)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN flight_type_mandatory_validity_type ON flight_type_mandatory_validity_type.activity_type_id &amp;amp; flight.activity_type_id &lt;br /&gt;
LEFT JOIN flight_pilot ON flight.id = flight_pilot.flight_id&lt;br /&gt;
LEFT JOIN person ON flight_pilot.pilot_id = person.id&lt;br /&gt;
LEFT JOIN validity_type ON flight_type_mandatory_validity_type.validity_type_id = validity_type.id&lt;br /&gt;
LEFT JOIN validity ON flight_type_mandatory_validity_type.validity_type_id = validity.validity_type_id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN resource ON flight.aircraft_id = resource.id&lt;br /&gt;
LEFT JOIN activity_type ON flight_type_mandatory_validity_type.activity_type_id = activity_type.id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND flight_pilot.num = 0&lt;br /&gt;
  AND validity_type.time_limitation=1&lt;br /&gt;
  AND validity.person_id = flight_pilot.pilot_id&lt;br /&gt;
  AND flight.start_date &amp;gt; validity.expire_date&lt;br /&gt;
  AND person.activated = 1&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
ORDER BY flight.start_date, `_tr(FULL_NAME)`, validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Number of men, women over and under 21 years for profile X, validity Y up to date for year Z==&lt;br /&gt;
* Variable '''$age''' should be of '''integer''' value type.&lt;br /&gt;
* Variable '''$profileId''' should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$validityTypeId''' should be of '''dbObjectMulti::validityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
    IF( ( $year - YEAR(birthdate) &amp;gt;= '$age' ) , 'Yes', 'No') AS 'Adult',&lt;br /&gt;
    COUNT(DISTINCT person.id) AS NUMBER  &lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN validity ON (person.id=validity.person_id)&lt;br /&gt;
LEFT JOIN validity_type ON (validity_type.id=validity.validity_type_id)&lt;br /&gt;
WHERE activated=1&lt;br /&gt;
  AND (profile &amp;amp; '$profileId' OR '-'='$profileId')&lt;br /&gt;
  AND (&lt;br /&gt;
      (validity_type.id='$validityTypeId' AND validity.expire_date &amp;gt;= '$year-12-31')&lt;br /&gt;
      OR&lt;br /&gt;
      '-'='$validityTypeId'&lt;br /&gt;
  )&lt;br /&gt;
GROUP BY Sex, Adult&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total hours by activities and resource categories for an instructor for one year==&lt;br /&gt;
* Variable '''$personId''' should be defined first and should be of '''dbOjectMulti::Person''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT tmp_flight.activity_type_name AS name,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS _tr(AIRCRAFT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS _tr(HELICOPTER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS _tr(GLIDER_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS _tr(ULTRA_LIGHT_CATEGORY),&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=9, duration, 0))) AS _tr(CLASSROOM_CATEGORY)&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        flightWithActivityType.activity_type_id,&lt;br /&gt;
        flightWithActivityType.activity_type_name,&lt;br /&gt;
        flightWithActivityType.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM (&lt;br /&gt;
        SELECT flight.id, flight.duration, flight.aircraft_id, activity_type.id AS activity_type_id, activity_type.name AS activity_type_name&lt;br /&gt;
        FROM flight&lt;br /&gt;
        LEFT JOIN activity_type ON flight.activity_type_id&amp;amp;activity_type.id&lt;br /&gt;
        LEFT JOIN flight_pilot ON (flight_pilot.flight_id=flight.id AND flight_pilot.num=1)&lt;br /&gt;
        WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
          AND flight.airborne=0 AND flight_pilot.pilot_id=$personId&lt;br /&gt;
    ) AS flightWithActivityType&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flightWithActivityType.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
) AS tmp_flight&lt;br /&gt;
GROUP BY tmp_flight.activity_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validity year young specific profile: Total of youngs/adults with specific profile==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Note: &amp;quot;21&amp;quot; is the limit of age to categorize a young and adult person. Change it according to your need.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    validity_type.name AS '_tr(VALIDITY)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;lt; 21 ), 1, 0 ) ) AS '_tr(YOUNG)',&lt;br /&gt;
    SUM( IF( ( $year - YEAR(personWithProfile.birthdate) &amp;gt;= 21 ), 1, 0 ) ) AS '_tr(ADULT)'&lt;br /&gt;
FROM validity_type&lt;br /&gt;
LEFT JOIN validity ON validity.validity_type_id = validity_type.id AND validity.is_current_validity = 1&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT person.*&lt;br /&gt;
    FROM person&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    WHERE ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY person.id&lt;br /&gt;
) AS personWithProfile ON (validity.person_id=personWithProfile.id)&lt;br /&gt;
WHERE YEAR(validity.grant_date)=$year&lt;br /&gt;
  AND personWithProfile.id IS NOT NULL&lt;br /&gt;
  AND validity_type.activated = 1&lt;br /&gt;
GROUP BY validity_type.id&lt;br /&gt;
ORDER BY validity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Validities obtained in the year==&lt;br /&gt;
*Variable '''$validityId''' should be defined first and should be of '''dbOjectMulti::ValidityType''' value type. &lt;br /&gt;
*'''21''' value is the age limit to be young. Should be changed according local rules&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    last_name AS Last_name, &lt;br /&gt;
    first_name AS First_name, &lt;br /&gt;
    IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
    IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex', DATE_FORMAT( grant_date, '%d/%m/%Y' ) AS Date, validity_type.name AS 'Validity'&lt;br /&gt;
FROM person &lt;br /&gt;
LEFT JOIN validity ON person_id=person.id &lt;br /&gt;
LEFT JOIN validity_type ON validity_type.id=validity.validity_type_id&lt;br /&gt;
WHERE YEAR(grant_date)=$year&lt;br /&gt;
  AND ( validity_type.id IN ($validityTypeId) OR '-' IN ($validityTypeId) )&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY last_name, first_name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited airfields==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS NAME, COUNT(location.icao_name) AS Visit&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id != structure.icao ) OR ( flight.arrival_icao_id != structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY Visit&lt;br /&gt;
DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Visited outsider airfield==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT location.icao_name AS ICAO, location.name AS Name, COUNT(location.icao_name) AS nb_visite&lt;br /&gt;
FROM structure, flight&lt;br /&gt;
LEFT JOIN location ON ( flight.departure_icao_id = location.icao_name )&lt;br /&gt;
WHERE ( ( flight.departure_icao_id !=structure.icao ) OR( flight.arrival_icao_id !=structure.icao ) ) AND YEAR(start_date) = $year&lt;br /&gt;
GROUP BY location.icao_name&lt;br /&gt;
ORDER BY nb_visite DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Young from this year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT( '[LINK=index.php[QUESTION_MARK]menuAction=admin_add_modify_user&amp;amp;menuParameter=',person.id,'&amp;amp;menuParameterBis=last_name&amp;amp;menuParameter3=', LEFT(person.last_name, 1),']', person.id, '[/LINK]' ) AS _tr(ID),&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    person.last_name AS _tr(LAST_NAME),&lt;br /&gt;
    DATE_FORMAT(birthdate ,'%m-%d-%Y') AS _tr(USER_BIRTHDATE), &lt;br /&gt;
    IF ( sex = 0, _tr(SEX_MALE), _tr(SEX_FEMALE) ) AS _tr(USER_SEX)&lt;br /&gt;
FROM person&lt;br /&gt;
WHERE ($year-YEAR(birthdate))&amp;lt;=$age AND activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Accounting exports]]=&lt;br /&gt;
&lt;br /&gt;
=Bookings=&lt;br /&gt;
==Booking==&lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$personId''' of '''dbObject::Person''' value type.&lt;br /&gt;
* Variable '''$resourceId''' of '''dbObject::Resource''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT booking.id AS _tr(ID), &lt;br /&gt;
DATE_FORMAT(booking.start_date, \'%Y-%m-%d %H:%i\') AS _tr(START_DATE), DATE_FORMAT(booking.end_date, \'%Y-%m-%d %H:%i\') AS _tr(END_DATE),&lt;br /&gt;
(&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM booking_activity_type&lt;br /&gt;
         LEFT JOIN activity_type ON (booking_activity_type.activity_type_id = activity_type.id)&lt;br /&gt;
         WHERE booking_activity_type.booking_id=booking.id&lt;br /&gt;
) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
resource.name AS _tr(RESOURCE),&lt;br /&gt;
left_booking_person.full_name AS _tr(LEFT_PLACE), &lt;br /&gt;
left_booking_person.email AS tr(EMAIL), &lt;br /&gt;
left_booking_person.cellPhone AS _tr(PHONE), &lt;br /&gt;
left_booking_person.birthDate AS _tr(BIRTHDATE), &lt;br /&gt;
right_booking_person.full_name AS _tr(RIGHT_PLACE),&lt;br /&gt;
 ',&lt;br /&gt;
   IFNULL(GROUP_CONCAT(&lt;br /&gt;
    CONCAT(&lt;br /&gt;
        ' (SELECT business_field_content.content FROM business_field_content WHERE booking.id=business_field_content.category_id AND business_field_content.business_field_id=',&lt;br /&gt;
        business_field.id,&lt;br /&gt;
        ' LIMIT 1) AS \'',&lt;br /&gt;
        REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
        '\''&lt;br /&gt;
    ) ORDER BY business_field.order_num&lt;br /&gt;
), '\'_\''),&lt;br /&gt;
'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_resource ON (booking.id=booking_resource.booking_id)&lt;br /&gt;
LEFT JOIN resource ON (resource.id=booking_resource.resource_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name,&lt;br /&gt;
	person.email AS email, person.cell_phone AS cellPhone, person.birthdate AS birthDate&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=0&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS left_booking_person ON (booking.id=left_booking_person.booking_id)&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT booking_person.booking_id, booking_person.person_id, CONCAT(person.last_name, \' \', person.first_name) AS full_name&lt;br /&gt;
    FROM booking_person&lt;br /&gt;
    LEFT JOIN person ON (person.id=booking_person.person_id)&lt;br /&gt;
    WHERE booking_person.place_num=1&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
) AS right_booking_person ON (booking.id=right_booking_person.booking_id)&lt;br /&gt;
WHERE booking.start_date &amp;gt;= $startDate AND booking.end_date &amp;lt; $endDate&lt;br /&gt;
  AND (booking_resource.resource_id=$resourceId OR \'\'=$resourceId)&lt;br /&gt;
  AND (&lt;br /&gt;
      left_booking_person.person_id=$personId OR right_booking_person.person_id=$personId OR \'\'=$personId&lt;br /&gt;
  )&lt;br /&gt;
ORDER BY booking.start_date, booking.end_date'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE  business_field.category='BOOKING'  AND business_field.user_access_mode!=2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Cumulated maintenance hours on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name AS 'Ressource', SUM(TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date)), SUM(TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date))&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.table_name='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY 1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Maintenance hours per resource on a period==&lt;br /&gt;
&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*startDate (Type : Date)&lt;br /&gt;
*endDate (Type : Date or DateTime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT IF(LEAST($startDate + INTERVAL 366 DAY, $endDate) &amp;lt;&amp;gt; $endDate, ' Attention la date de fin retenue correspond à la date de début + 366 jours', '') AS 'Ressource', '' AS 'Date debut maintenance', '' AS 'Date fin maintenance', '' AS 'Duree de maintenance en heures', '' AS 'Duree en jours'&lt;br /&gt;
UNION ALL&lt;br /&gt;
SELECT resource.name, booking.start_date AS 'Date debut maintenance', booking.end_date, TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date),  TIMESTAMPDIFF(DAY,booking.start_date, booking.end_date)&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND (booking.start_date &amp;gt;= $startDate)&lt;br /&gt;
  AND (booking.start_date &amp;lt;= LEAST($startDate + INTERVAL 366 DAY, $endDate))&lt;br /&gt;
ORDER BY 1, 2&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Booking for maintenance ordered by resource and date with name of the responsible==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS 'Resource name', booking.start_date AS 'Start date', TIMESTAMPDIFF(HOUR,booking.start_date, booking.end_date) AS 'booking duration', person.first_name AS 'First name', person.last_name AS 'Last name'&lt;br /&gt;
FROM booking&lt;br /&gt;
LEFT JOIN booking_activity_type ON booking.id=booking_activity_type.booking_id&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id=booking_activity_type.activity_type_id&lt;br /&gt;
LEFT JOIN booking_resource ON booking.id=booking_resource.booking_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = booking_resource.resource_id&lt;br /&gt;
LEFT JOIN log ON log.field_value=booking.id&lt;br /&gt;
LEFT JOIN journal ON journal.id=log.journal_id&lt;br /&gt;
LEFT JOIN person ON person.name=journal.login&lt;br /&gt;
WHERE activity_type.name='Maintenance'&lt;br /&gt;
  AND (log.action='INSERT')&lt;br /&gt;
  AND (log.TABLE_NAME='booking')&lt;br /&gt;
  AND (log.field_name='id')&lt;br /&gt;
  AND YEAR(booking.start_date) = $year&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
ORDER BY resource.name, booking.start_date&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight time management=&lt;br /&gt;
&lt;br /&gt;
==Flight hours total and last recorded counters to the date X==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$endDate''' should be of '''Datetime''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name, sexa2HoursMinute( SUM(duration) + aircraft.ref_hours ) AS 'Total heures', sexa2HoursMinute( MAX(counter_arrival) ) AS 'Dernier compteur'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
LEFT JOIN aircraft ON (aircraft.id=resource.id)&lt;br /&gt;
WHERE flight.start_date &amp;lt;= $endDate&lt;br /&gt;
  AND resource.activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
ORDER BY resource.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT MONTH( start_date) AS months, CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
WHERE YEAR(start_date) = $year &lt;br /&gt;
GROUP BY months&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total over a 12 months period==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS 'Person', &lt;br /&gt;
    IF (( SELECT &lt;br /&gt;
            COUNT(*) &lt;br /&gt;
          FROM flight_pilot fp2 &lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
      'Solo',&lt;br /&gt;
      'double') AS Solo_DC, &lt;br /&gt;
    CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight_pilot fp &lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id &lt;br /&gt;
  LEFT JOIN person a ON a.id=fp.pilot_id &lt;br /&gt;
  WHERE start_date &amp;gt; DATE_SUB(NOW(), INTERVAL 1 YEAR)  AND fp.num=0 &lt;br /&gt;
  GROUP BY Person, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    name AS Callsign, &lt;br /&gt;
    YEAR( start_date ) AS Year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
  FROM flight &lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY name &lt;br /&gt;
  UNION &lt;br /&gt;
  SELECT &lt;br /&gt;
    &amp;quot;Total&amp;quot;, &lt;br /&gt;
    $year AS year, &lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total      &lt;br /&gt;
  FROM flight &lt;br /&gt;
  WHERE YEAR(start_date) = $year AND airborne = 0 &lt;br /&gt;
  GROUP BY year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft per year and per month (for an activity type)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resource.name AS _tr(RESOURCE_NAME),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(SUM)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
  AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per aircraft, per year and per month (for a given type of activity and profile)==&lt;br /&gt;
&lt;br /&gt;
* Variable '''$activityTypeId''' should be defined first and should be of '''dbOject::ActivityType''' value type.&lt;br /&gt;
* Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
* Variable '''$occupiedSeat''' represent the seat number of the person in the flight, can have following values (0: left place, 1: right place, '': both)&lt;br /&gt;
* Variable '''$profileId''' of '''dbOjectMulti::Profile''' value type&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT aircraft_id AS _tr(IDENT), resourceName AS _tr(RESOURCE_NAME), profileName as _tr(PROFILE),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=1, duration, 0 ) ) ) AS _tr(MONTH_JAN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=2, duration, 0 ) ) ) AS _tr(MONTH_FEB_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=3, duration, 0 ) ) ) AS _tr(MONTH_MAR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=4, duration, 0 ) ) ) AS _tr(MONTH_APR_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=5, duration, 0 ) ) ) AS _tr(MONTH_MAY_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=6, duration, 0 ) ) ) AS _tr(MONTH_JUN_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=7, duration, 0 ) ) ) AS _tr(MONTH_JUL_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=8, duration, 0 ) ) ) AS _tr(MONTH_AUG_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=9, duration, 0 ) ) ) AS _tr(MONTH_SEP_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=10, duration, 0 ) ) ) AS _tr(MONTH_OCT_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=11, duration, 0 ) ) ) AS _tr(MONTH_NOV_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date)=12, duration, 0 ) ) ) AS _tr(MONTH_DEC_ABBR),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS  _tr(SUM)&lt;br /&gt;
FROM &lt;br /&gt;
(&lt;br /&gt;
SELECT &lt;br /&gt;
flight.aircraft_id, resource.name AS resourceName, flight.duration, flight.start_date, profile.name AS profileName &lt;br /&gt;
FROM&lt;br /&gt;
flight&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND airborne = 0&lt;br /&gt;
AND (flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId)&lt;br /&gt;
AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
AND (IF((('$occupiedSeat'=0) OR ('$occupiedSeat'='')), 0, -1) = flight_pilot.num&lt;br /&gt;
    OR IF((('$occupiedSeat'=1) OR ('$occupiedSeat'='')), 1, -1) = flight_pilot.num)&lt;br /&gt;
AND person.activated=1&lt;br /&gt;
GROUP BY resourceName, profileName, flight.id&lt;br /&gt;
) AS flightTmp&lt;br /&gt;
GROUP BY resourceName, profileName&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS 'Solo',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Double',&lt;br /&gt;
    sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS 'Total'&lt;br /&gt;
FROM person&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT &lt;br /&gt;
        pilot_id,&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
            'Solo',&lt;br /&gt;
            'DC'&lt;br /&gt;
        ) AS Solo_DC,&lt;br /&gt;
        SUM(flight.duration) AS sum_duration&lt;br /&gt;
    FROM flight_pilot fp &lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    WHERE flight.airborne=0 AND YEAR(start_date) = $year AND fp.num=0 &lt;br /&gt;
    GROUP BY pilot_id, Solo_DC&lt;br /&gt;
) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
GROUP BY person.id&lt;br /&gt;
ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per pilot per profile==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    profile.name AS Profil,&lt;br /&gt;
    CONCAT(last_name,' ',first_name) AS Nom,&lt;br /&gt;
    IF (( SELECT&lt;br /&gt;
            COUNT(*)&lt;br /&gt;
          FROM flight_pilot fp2&lt;br /&gt;
          WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0,&lt;br /&gt;
        'Solo',&lt;br /&gt;
        'double') AS Solo_DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( flight.duration ) ) AS Total&lt;br /&gt;
  FROM flight_pilot fp&lt;br /&gt;
  LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
  LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
  LEFT JOIN profile ON (person.profile &amp;amp; profile.id)&lt;br /&gt;
  WHERE flight.airborne=0 AND YEAR( start_date ) = $year AND fp.num=0&lt;br /&gt;
  GROUP BY Profil, Nom, Solo_DC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total Flight hours per pilot with total==&lt;br /&gt;
Following extrafields are needed&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*month (Type : Integer) '''OR''' startDate and endDate (Type : Date)&lt;br /&gt;
*$occupiedSeat (Type : Integer)&lt;br /&gt;
*profileId (Type : dbObjectMulti::Profile)&lt;br /&gt;
&lt;br /&gt;
This report is useful for a group of pilots from a common customer (like DGAC in France)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(person.last_name,' ',person.first_name) AS _tr(FULL_NAME),&lt;br /&gt;
CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 - FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS _tr(TOTAL_FLIGHT_TIME),&lt;br /&gt;
SUM(account_entry.debit) - SUM(account_entry.credit) AS _tr(TOTAL_AMOUNT_ACTIVITIES) &lt;br /&gt;
FROM flight&lt;br /&gt;
RIGHT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
    AND (IF((($occupiedSeat=0) OR ($occupiedSeat='')), 0, -1) = flight_pilot.num&lt;br /&gt;
     OR  IF((($occupiedSeat=1) OR ($occupiedSeat='')), 1, -1) = flight_pilot.num)&lt;br /&gt;
RIGHT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
RIGHT JOIN profile ON profile.id&amp;amp;person.profile&lt;br /&gt;
    AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
LEFT JOIN account_entry ON account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
LEFT JOIN account ON account.id=account_entry.account_id&lt;br /&gt;
WHERE $startDate &amp;lt;= flight.start_date AND flight.start_date &amp;lt;= $endDate AND (account.category = 11 OR account.category = 2)&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per instructor, month (for a flight type)==&lt;br /&gt;
Following extrafields are needed :&lt;br /&gt;
*year (Type : Year)&lt;br /&gt;
*activityTypeId (Type : dbObject::FlightType)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    CONCAT(UPPER(person.last_name), ' ', person.first_name) AS _tr(LAST_NAME),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JANUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_FEBRUARY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MARCH),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_APRIL),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_MAY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JUN),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_JULY),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_AUGUST),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_SEPTEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_OCTOBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_NOVEMBER),&lt;br /&gt;
    (SELECT sexa2HoursMinute( SUM( duration ) ) FROM flight INNER JOIN flight_pilot ON flight_pilot.flight_id = flight.id WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND flight_pilot.pilot_id = person.id AND flight_pilot.num = 1 AND ( flight.activity_type_id &amp;amp; $activityTypeId != 0 OR ''=$activityTypeId ) ) AS _tr(MONTH_DECEMBER),&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS _tr(TOTAL)&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_pilot fp ON fp.flight_id = flight.id &lt;br /&gt;
LEFT JOIN person ON person.id=fp.pilot_id &lt;br /&gt;
WHERE flight.airborne=0&lt;br /&gt;
  AND person.activated=1&lt;br /&gt;
  AND fp.num = 1 &lt;br /&gt;
  AND YEAR( start_date ) = $year  &lt;br /&gt;
  AND ( flight.activity_type_id &amp;amp; $activityTypeId OR ''=$activityTypeId )&lt;br /&gt;
GROUP BY person.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours following nationality==&lt;br /&gt;
   &amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  &lt;br /&gt;
     nationality.label, &lt;br /&gt;
     CONCAT(FLOOR(SUM( flight.duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( flight.duration )/600 -   FLOOR(SUM( flight.duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
   FROM flight , flight_pilot fp, person a, nationality&lt;br /&gt;
   WHERE flight.id = fp.flight_id&lt;br /&gt;
     AND fp.pilot_id = a.id&lt;br /&gt;
     AND a.nationality = nationality.code&lt;br /&gt;
   GROUP BY nationality.code&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours total per flight type per month==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
    activity_type.name AS Type_vol,&lt;br /&gt;
    flight_pilot_DC.DC,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON activity_type.id &amp;amp; flight.activity_type_id&lt;br /&gt;
LEFT JOIN (&lt;br /&gt;
    SELECT flight_id, IF( MAX(num) = 1, 'Double', 'Solo' ) AS DC&lt;br /&gt;
    FROM flight_pilot&lt;br /&gt;
    WHERE flight_pilot.num &amp;lt;= 1&lt;br /&gt;
    GROUP BY flight_id&lt;br /&gt;
) AS flight_pilot_DC ON flight.id=flight_pilot_DC.flight_id&lt;br /&gt;
WHERE YEAR(start_date) = $year&lt;br /&gt;
  AND airborne = 0&lt;br /&gt;
GROUP BY activity_type.id, flight_pilot_DC.DC&lt;br /&gt;
HAVING (Name &amp;lt;&amp;gt; 'Instruction' OR flight_pilot_DC.DC &amp;lt;&amp;gt; 'Double')&lt;br /&gt;
ORDER BY order_num ASC, DC DESC&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights hours : less than 21 years, more than 21 years, male, female, for a given profile==&lt;br /&gt;
*Variable '''$profileId''' should be defined first and should be of '''dbOjectMulti::Profile''' value type. &lt;br /&gt;
*Variable '''$year''' should be defined first and should be of '''Year''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT Sex, Young, Instruction,&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=1, duration, 0))) AS 'Avion',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=18, duration, 0))) AS 'Hélicoptère',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=19, duration, 0))) AS 'Planeur',&lt;br /&gt;
       sexa2HoursMinute(SUM(IF(category=17, duration, 0))) AS 'ULM'&lt;br /&gt;
FROM (&lt;br /&gt;
    SELECT&lt;br /&gt;
        IF( person.sex=0, 'Male', IF( person.sex=1, 'Female', 'Undefined') ) AS 'Sex',&lt;br /&gt;
        IF( ( $year - YEAR( birthdate ) &amp;gt;= 21) , 'No', 'Yes') AS Young,&lt;br /&gt;
        IF ((SELECT COUNT(*) FROM flight_pilot fp2 WHERE fp2.flight_id=fp.flight_id AND fp2.num=1)=0, 'Solo', 'Instruction') AS Instruction,&lt;br /&gt;
        flight.duration,&lt;br /&gt;
        resource_type.category&lt;br /&gt;
    FROM flight_pilot fp&lt;br /&gt;
    LEFT JOIN flight ON fp.flight_id=flight.id&lt;br /&gt;
    LEFT JOIN person ON person.id=fp.pilot_id&lt;br /&gt;
    LEFT JOIN profile ON person.profile&amp;amp;profile.id&lt;br /&gt;
    LEFT JOIN resource ON (resource.id=flight.aircraft_id)&lt;br /&gt;
    LEFT JOIN resource_type ON (resource_type.id=resource.resource_type_id)&lt;br /&gt;
    WHERE YEAR( start_date )=$year&lt;br /&gt;
      AND fp.num=0&lt;br /&gt;
      AND flight.airborne = 0&lt;br /&gt;
      AND ( profile.id IN ($profileId) OR '-' IN ($profileId) )&lt;br /&gt;
      AND person.activated=1&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
) AS tmp_stat&lt;br /&gt;
GROUP BY Sex, Young, Instruction WITH ROLLUP&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of flight time per month of &amp;quot;local flight&amp;quot;==&lt;br /&gt;
&amp;quot;Local flight&amp;quot; is defined as a flight less than 1h30 and with the same departure and destination&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.aircraft_id AS Num, name AS Immat,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 1 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Janv,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 2 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Fevr,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 3 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mars,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 4 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Avri,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 5 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Mai,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 6 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juin,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 7 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Juil,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 8 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Aout,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 9 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Sept,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 10 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Octo,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 11 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Nove,&lt;br /&gt;
    ( SELECT CONCAT( FLOOR(SUM(flight.duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) )&lt;br /&gt;
    FROM flight&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = 12 AND flight.aircraft_id = Num AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
    ) AS Dece,&lt;br /&gt;
    CONCAT( FLOOR(SUM(duration) / 600), ':', TIME_FORMAT( SEC_TO_TIME( ( SUM(flight.duration) / 600 - FLOOR(SUM(flight.duration) / 600) ) * 3600 ), '%i' ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year AND flight.departure_icao_id = flight.arrival_icao_id AND flight.duration &amp;lt; 90 * 600&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Computation of non-&amp;quot;local flight&amp;quot; time per month==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT  aircraft_id AS Num, name AS Immat, &lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 1 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Janv,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 2 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Fevr,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 3 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mars,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 4 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Avri,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 5 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Mai,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 6 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juin,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 7 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Juil,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 8 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Aout,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 9 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Sept,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 10 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Octo,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 11 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Nove,&lt;br /&gt;
    (SELECT &lt;br /&gt;
        CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) &lt;br /&gt;
    FROM flight &lt;br /&gt;
    WHERE YEAR(start_date)= $year AND MONTH(start_date)= 12 AND aircraft_id = Num AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)) AS Dece,&lt;br /&gt;
    CONCAT(FLOOR(SUM( duration )/600),':',TIME_FORMAT(SEC_TO_TIME((SUM( duration )/600 - FLOOR(SUM( duration )/600))*3600),'%i')) AS Total &lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN aircraft ON aircraft.id = flight.aircraft_id &lt;br /&gt;
LEFT JOIN resource ON resource.id = aircraft.id&lt;br /&gt;
WHERE YEAR(start_date)= $year AND ((departure_location_id = arrival_location_id AND duration &amp;gt;= 90*600) OR departure_location_id &amp;lt;&amp;gt; arrival_location_id)&lt;br /&gt;
GROUP BY resource.id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Stats all flight hours per month per year==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT YEAR(start_date) AS Year, 'Monthly' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) = 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
UNION&lt;br /&gt;
SELECT YEAR(start_date) AS Year, 'Accumulation' AS Type,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 1, duration, 0 ) ) ) AS Janu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 2, duration, 0 ) ) ) AS Febr,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 3, duration, 0 ) ) ) AS Marc,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 4, duration, 0 ) ) ) AS Apri,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 5, duration, 0 ) ) ) AS May,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 6, duration, 0 ) ) ) AS June,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 7, duration, 0 ) ) ) AS July,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 8, duration, 0 ) ) ) AS Augu,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 9, duration, 0 ) ) ) AS Sept,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 10, duration, 0 ) ) ) AS Octo,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 11, duration, 0 ) ) ) AS Nove,&lt;br /&gt;
    sexa2HoursMinute( SUM( IF( MONTH(start_date) &amp;lt;= 12, duration, 0 ) ) ) AS Dece,&lt;br /&gt;
    sexa2HoursMinute( SUM( duration ) ) AS Total&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
GROUP BY Year&lt;br /&gt;
ORDER BY Type DESC, Year&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours per activity type between date==&lt;br /&gt;
* Variable '''$startDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$endDate''' should be defined first and should be of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT resource.name AS _tr(RESOURCE_NAME), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            'sexa2HoursMinute( SUM( IF( tmp_flight.activity_type_id &amp;amp; ',&lt;br /&gt;
            activity_type.id,&lt;br /&gt;
            ', tmp_flight.duration, 0 ) ) )',&lt;br /&gt;
            ' AS ',&lt;br /&gt;
            QUOTE(activity_type.name)&lt;br /&gt;
        )&lt;br /&gt;
    ),&lt;br /&gt;
    ', sexa2HoursMinute( SUM( tmp_flight.duration ) ) AS _tr(ALL_ACTIVITY_TYPES)&lt;br /&gt;
    FROM resource&lt;br /&gt;
    INNER JOIN&lt;br /&gt;
    (&lt;br /&gt;
        SELECT flight.aircraft_id, flight.activity_type_id, duration&lt;br /&gt;
        FROM flight&lt;br /&gt;
        WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight.airborne = 0&lt;br /&gt;
    ) AS tmp_flight ON (resource.id=tmp_flight.aircraft_id)&lt;br /&gt;
    GROUP BY resource.id'&lt;br /&gt;
)&lt;br /&gt;
FROM activity_type&lt;br /&gt;
WHERE activity_type.activated=1&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Flight reports=&lt;br /&gt;
&lt;br /&gt;
==Activities summary for a person on the right place for a given month==&lt;br /&gt;
&lt;br /&gt;
Requirement:&lt;br /&gt;
* Variable '''$year''' of '''Year''' value type&lt;br /&gt;
* Variable '''$month''' of '''Month''' value type&lt;br /&gt;
* Variable '''$personId''' of '''dbOjectMulti::Person''' value type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT $month AS Mois, CONCAT(left_person.last_name, ' ', left_person.first_name) AS 'Personne en première place', activity_type.name AS 'Type d\'activité', sexa2HoursMinute( SUM( IFNULL(duration, 0) ) ) AS 'Durée'&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN activity_type ON (flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS left_place ON (flight.id=left_place.flight_id AND left_place.num=0)&lt;br /&gt;
LEFT JOIN person AS left_person ON (left_place.pilot_id=left_person.id)&lt;br /&gt;
LEFT JOIN flight_pilot AS right_place ON (flight.id=right_place.flight_id AND right_place.num=1)&lt;br /&gt;
WHERE YEAR(flight.start_date)=$year&lt;br /&gt;
  AND MONTH(flight.start_date)=$month&lt;br /&gt;
  AND (right_place.pilot_id=$personId OR '-'=right_place.pilot_id='$personId')&lt;br /&gt;
GROUP BY left_person.id, activity_type.id&lt;br /&gt;
ORDER BY left_person.last_name, left_person.first_name, activity_type.name&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Aircraft(s) which no flight were done for at least 30 day(s)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
SELECT resource.id, resource.name&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
WHERE start_date &amp;lt; ( NOW() - INTERVAL 30 DAY )&lt;br /&gt;
  AND physical=1 AND activated=1&lt;br /&gt;
GROUP BY resource.id&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight between date==&lt;br /&gt;
Following variables are needed:&lt;br /&gt;
*startDate (Type : Datetime)&lt;br /&gt;
*endDate (Type : Datetime)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
'SELECT&lt;br /&gt;
     flight.id AS _tr(ID),&lt;br /&gt;
     IF(flight.validated=1, _tr(YES), _tr(NO)) AS _tr(VALIDATED),&lt;br /&gt;
     flight.start_date AS _tr(START_DATE),&lt;br /&gt;
     resource.name AS _tr(RESOURCE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 0&lt;br /&gt;
     ) AS _tr(LEFT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT CONCAT(UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
         FROM flight_pilot AS tmp_flight_pilot&lt;br /&gt;
         LEFT JOIN person AS tmp_person ON tmp_flight_pilot.pilot_id = tmp_person.id&lt;br /&gt;
         WHERE tmp_flight_pilot.flight_id = flight.id AND tmp_flight_pilot.num = 1&lt;br /&gt;
     ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT GROUP_CONCAT( activity_type.name SEPARATOR \', \')&lt;br /&gt;
         FROM flight AS tmp_flight&lt;br /&gt;
         LEFT JOIN activity_type ON (tmp_flight.activity_type_id &amp;amp; activity_type.id)&lt;br /&gt;
         WHERE flight.id=tmp_flight.id&lt;br /&gt;
     ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.departure_icao_id&lt;br /&gt;
     ) AS _tr(DEPARTURE),&lt;br /&gt;
     (&lt;br /&gt;
         SELECT location.name&lt;br /&gt;
         FROM location&lt;br /&gt;
         WHERE location.icao_name=flight.arrival_icao_id&lt;br /&gt;
     ) AS _tr(ARRIVAL),&lt;br /&gt;
     flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
     flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_departure) AS _tr(FLIGHT_COUNTER_DEPARTURE),&lt;br /&gt;
     sexa2HoursMinute(flight.counter_arrival) AS _tr(FLIGHT_COUNTER_ARRIVAL),&lt;br /&gt;
     sexa2HoursMinute(flight.duration) AS _tr(DURATION_IN_HOURS_AND_MINUTES),&lt;br /&gt;
     sexa2HoursHundredths(flight.duration) AS _tr(DURATION_IN_HOURS_AND_HUNDREDTHS),',&lt;br /&gt;
     IFNULL(GROUP_CONCAT(&lt;br /&gt;
        CONCAT(&lt;br /&gt;
            IF(business_field.value_type LIKE ('dbObject::Person%'),&lt;br /&gt;
            ' (SELECT CONCAT (UPPER(tmp_person.last_name), \' \', tmp_person.first_name)&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            RIGHT JOIN person AS tmp_person ON (tmp_person.id=business_field_content.content)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id=',&lt;br /&gt;
            ' (SELECT GROUP_CONCAT(business_field_content.content SEPARATOR \', \')&lt;br /&gt;
            FROM business_field_content&lt;br /&gt;
            RIGHT JOIN business_field ON (business_field.id=business_field_content.business_field_id)&lt;br /&gt;
            WHERE business_field_content.category_id=flight.id AND business_field_content.business_field_id='),&lt;br /&gt;
            business_field.id,&lt;br /&gt;
            ') AS \'',&lt;br /&gt;
            REPLACE(business_field.label, '\'', '\\\''),&lt;br /&gt;
            '\''&lt;br /&gt;
        )&lt;br /&gt;
    ), '\'_\''),&lt;br /&gt;
     ',(&lt;br /&gt;
         SELECT SUM(account_entry.debit) - SUM(account_entry.credit)&lt;br /&gt;
         FROM account_entry&lt;br /&gt;
         RIGHT JOIN account ON (account.id=account_entry.account_id AND (account.category = 11 OR account.category = 2))&lt;br /&gt;
         WHERE account_entry.flow_id = flight_account_entry.account_entry_id&lt;br /&gt;
     )  AS _tr(AMOUNT)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_account_entry ON flight_account_entry.flight_id = flight.id&lt;br /&gt;
WHERE flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate&lt;br /&gt;
ORDER BY flight.start_date;&lt;br /&gt;
'&lt;br /&gt;
)&lt;br /&gt;
FROM business_field&lt;br /&gt;
WHERE business_field.category='FLIGHT' &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight log book==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
[OF_DYNAMIC_SQL]&lt;br /&gt;
SELECT CONCAT(&lt;br /&gt;
    'SELECT &lt;br /&gt;
        DATE_FORMAT(flight.start_date, \'%d/%m/%Y %H:%i\') AS _tr(START_DATE),&lt;br /&gt;
        resource.name AS _tr(RESOURCE),&lt;br /&gt;
        CONCAT(last_name, \' \', first_name) AS _tr(LEFT_PLACE),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT CONCAT(person.last_name, \' \', person.first_name) AS _tr(RIGHT_PLACE)&lt;br /&gt;
            FROM flight_pilot AS tmp2_flight_pilot &lt;br /&gt;
            LEFT JOIN person ON person.id = tmp2_flight_pilot.pilot_id&lt;br /&gt;
            WHERE tmp2_flight_pilot.flight_id = flight_pilot.flight_id AND tmp2_flight_pilot.num = 1&lt;br /&gt;
        ) AS _tr(RIGHT_PLACE),&lt;br /&gt;
        IF (&lt;br /&gt;
            (SELECT COUNT(*) &lt;br /&gt;
             FROM flight_pilot AS tmp_flight_pilot &lt;br /&gt;
             WHERE tmp_flight_pilot.flight_id = flight_pilot.flight_id AND tmp_flight_pilot.num = 1) = 0, &lt;br /&gt;
            &amp;quot;S&amp;quot;, &lt;br /&gt;
            &amp;quot;D&amp;quot;&lt;br /&gt;
        ) AS &amp;quot;Solo / DC&amp;quot;,&lt;br /&gt;
        sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
        (&lt;br /&gt;
            SELECT GROUP_CONCAT(activity_type.name SEPARATOR \', \')&lt;br /&gt;
            FROM flight AS tmp_flight&lt;br /&gt;
            LEFT JOIN activity_type ON tmp_flight.activity_type_id = activity_type.id&lt;br /&gt;
            WHERE tmp_flight.id = flight.id&lt;br /&gt;
        ) AS _tr(ACTIVITY_TYPE),&lt;br /&gt;
        flight.departure_icao_id AS _tr(DEPARTURE),&lt;br /&gt;
        flight.arrival_icao_id AS _tr(ARRIVAL),&lt;br /&gt;
        flight.landing_number AS _tr(FLIGHT_LANDING_NUMBER),&lt;br /&gt;
        flight.people_onboard AS _tr(FLIGHT_PEOPLE_ON_BOARD),&lt;br /&gt;
        business_field_comment.content AS _tr(COMMENT), ',&lt;br /&gt;
    GROUP_CONCAT(&lt;br /&gt;
        DISTINCT CONCAT(&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 0 THEN flight_tank_qty.quantity ELSE 0 END) AS `',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET A1'&lt;br /&gt;
                WHEN 3 THEN 'Huile'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'GAZOLE'&lt;br /&gt;
                WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'Électrique'&lt;br /&gt;
            END,&lt;br /&gt;
            ' : ajout avant`, ',&lt;br /&gt;
            'SUM(CASE WHEN tank.tank_type_id = ', &lt;br /&gt;
            tank.tank_type_id, &lt;br /&gt;
            ' AND flight_tank_qty.after_flight = 1 THEN flight_tank_qty.quantity ELSE 0 END) AS `',&lt;br /&gt;
            CASE tank.tank_type_id&lt;br /&gt;
                WHEN 1 THEN '100LL'&lt;br /&gt;
                WHEN 2 THEN 'JET A1'&lt;br /&gt;
                WHEN 3 THEN 'Huile'&lt;br /&gt;
                WHEN 4 THEN 'SP95'&lt;br /&gt;
                WHEN 5 THEN 'SP98'&lt;br /&gt;
                WHEN 6 THEN 'GAZOLE'&lt;br /&gt;
		WHEN 7 THEN 'UL91'&lt;br /&gt;
                WHEN 8 THEN 'Électrique'&lt;br /&gt;
            END,&lt;br /&gt;
            ' : ajout après`'&lt;br /&gt;
        )&lt;br /&gt;
    SEPARATOR ', '),&lt;br /&gt;
    ' FROM flight_pilot&lt;br /&gt;
    LEFT JOIN flight ON flight_pilot.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.flight_id = flight.id&lt;br /&gt;
    LEFT JOIN tank ON flight_tank_qty.tank_id = tank.id &lt;br /&gt;
    LEFT JOIN activity_type ON (activity_type.id = flight.activity_type_id)&lt;br /&gt;
    LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    LEFT JOIN (&lt;br /&gt;
        SELECT business_field_content.category_id, business_field_content.content&lt;br /&gt;
        FROM business_field_content&lt;br /&gt;
        LEFT JOIN business_field ON business_field.id = business_field_content.business_field_id&lt;br /&gt;
        WHERE business_field.variable = \'activityComment\'&lt;br /&gt;
    ) AS business_field_comment ON business_field_comment.category_id = flight.id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = 2024&lt;br /&gt;
    AND flight_pilot.num = 0&lt;br /&gt;
    AND flight.airborne = 0&lt;br /&gt;
    GROUP BY flight.id&lt;br /&gt;
    ORDER BY CONCAT(person.last_name, \' \', person.first_name), flight.start_date'&lt;br /&gt;
)&lt;br /&gt;
FROM tank&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights which have landed elsewhere than the base field==&lt;br /&gt;
Variable $icao shall be defined (dbObject:Location)&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT DATE_FORMAT(flight.start_date, '%d/%m/%Y') AS Date,&lt;br /&gt;
    resource.name AS Immatriculation,&lt;br /&gt;
    CONCAT(FLOOR( duration/600),':',TIME_FORMAT(SEC_TO_TIME((duration/600 - FLOOR(duration/600))*3600),'%i')) AS Durée,&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS Prénom,&lt;br /&gt;
    flight.departure_icao_id AS Départ,&lt;br /&gt;
    flight.arrival_icao_id AS Arrivée&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
WHERE flight_pilot.num = 0 AND( flight.departure_icao_id LIKE $icao OR flight.arrival_icao_id LIKE $icao )&lt;br /&gt;
GROUP BY flight.id &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flights with mechanic remark==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
*Business field '''$maintenanceUserComment''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$mechanicAnswer''' should be defined first and should be of '''Text multi line''' value type and '''Flight''' category.&lt;br /&gt;
*Business field '''$resourceId''' should be defined first and should be of '''dbObject::Resource''' value type and '''Report''' category.&lt;br /&gt;
*Business field '''$numberMonth''' should be defined first and should be of '''integer''' value type and '''Report''' category.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT CONCAT(&lt;br /&gt;
        '[LINK=index.php[QUESTION_MARK]menuAction=flight_record&amp;amp;menuParameter=',&lt;br /&gt;
        flight.id,&lt;br /&gt;
        '&amp;amp;menuParameterBis=flight_resource_logbook&amp;amp;menuParameter3=1]',&lt;br /&gt;
        flight.start_date,&lt;br /&gt;
        '[/LINK]'&lt;br /&gt;
    ) AS _tr(DATE),&lt;br /&gt;
    resource.name AS _tr(RESOURCE),&lt;br /&gt;
    sexa2HoursMinute(flight.duration) AS _tr(DURATION),&lt;br /&gt;
    person.last_name AS Nom,&lt;br /&gt;
    person.first_name AS _tr(FIRST_NAME),&lt;br /&gt;
    departure_location.icao_name AS _tr(DEPARTURE),&lt;br /&gt;
    arrival_location.icao_name AS _tr(ARRIVAL),&lt;br /&gt;
    maintenanceUserComment.content AS _tr(REMARK),&lt;br /&gt;
    mechanicAnswer.content AS _tr(ANSWER)&lt;br /&gt;
FROM flight&lt;br /&gt;
LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id = flight.id&lt;br /&gt;
LEFT JOIN person ON person.id = flight_pilot.pilot_id&lt;br /&gt;
LEFT JOIN location AS departure_location ON departure_location.icao_name = flight.departure_icao_id&lt;br /&gt;
LEFT JOIN location AS arrival_location ON arrival_location.icao_name = flight.arrival_icao_id&lt;br /&gt;
LEFT JOIN business_field_content AS maintenanceUserComment ON maintenanceUserComment.category_id = flight.id&lt;br /&gt;
LEFT JOIN business_field_content AS mechanicAnswer ON mechanicAnswer.category_id = flight.id&lt;br /&gt;
WHERE flight_pilot.num = 0 &lt;br /&gt;
    AND maintenanceUserComment.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;maintenanceUserComment&amp;quot; ) )&lt;br /&gt;
    AND mechanicAnswer.business_field_id =( SELECT business_field.id FROM business_field WHERE ( business_field.variable = &amp;quot;mechanicAnswer&amp;quot; ) )&lt;br /&gt;
    AND ( maintenanceUserComment.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; OR mechanicAnswer.content &amp;lt;&amp;gt; &amp;quot;&amp;quot; )&lt;br /&gt;
    AND start_date &amp;gt; DATE_SUB( NOW(), INTERVAL $numberMonth MONTH)&lt;br /&gt;
    AND ( (resource.id = $resourceId) OR($resourceId &amp;lt; '1') )&lt;br /&gt;
GROUP BY flight.id&lt;br /&gt;
ORDER BY resource.name, start_date DESC  &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight with their location code (ICAO)==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT flight.*&lt;br /&gt;
FROM flight&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Flight hours total per person==&lt;br /&gt;
Following variables are needed: &lt;br /&gt;
* Variable '''$endDate''' of '''Date and time''' value type.&lt;br /&gt;
* Variable '''$startDate''' of '''Date and time''' value type.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
     CONCAT(person.last_name,' ',person.first_name) AS  _tr(LAST_NAME),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) ) AS _tr(ALONE),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(LEGEND_INSTRUCTION),&lt;br /&gt;
     sexa2HoursMinute( SUM( IFNULL( Solo.sum_duration, 0 ) ) + SUM( IFNULL( DC.sum_duration, 0 ) ) ) AS _tr(TOTAL)&lt;br /&gt;
 FROM person&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1&lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS Solo ON person.id=Solo.pilot_id AND Solo.Solo_DC='Solo'&lt;br /&gt;
 LEFT JOIN (&lt;br /&gt;
     SELECT &lt;br /&gt;
         pilot_id,&lt;br /&gt;
         IF (&lt;br /&gt;
             (SELECT COUNT(*) FROM flight_pilot flight_pilot_2 WHERE flight_pilot_2.flight_id=flight_pilot_1.flight_id AND flight_pilot_2.num=1)=0,&lt;br /&gt;
             'Solo',&lt;br /&gt;
             'DC'&lt;br /&gt;
         ) AS Solo_DC,&lt;br /&gt;
         SUM(flight.duration) AS sum_duration&lt;br /&gt;
     FROM flight_pilot flight_pilot_1 &lt;br /&gt;
     LEFT JOIN flight ON flight_pilot_1.flight_id=flight.id&lt;br /&gt;
     WHERE flight.airborne=0 AND flight.start_date &amp;gt;= $startDate AND flight.start_date &amp;lt;= $endDate AND flight_pilot_1.num=0 &lt;br /&gt;
     GROUP BY pilot_id, Solo_DC&lt;br /&gt;
 ) AS DC ON person.id=DC.pilot_id AND DC.Solo_DC='DC'&lt;br /&gt;
 WHERE (Solo.pilot_id IS NOT NULL OR DC.pilot_id IS NOT NULL)&lt;br /&gt;
   AND person.activated=1&lt;br /&gt;
 GROUP BY person.id&lt;br /&gt;
 ORDER BY Nom&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Fuel/Oil reports=&lt;br /&gt;
==Hourly consumption==&lt;br /&gt;
Unit is: unit of the tank per hour&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS '_tr(REPORT_RESOURCE)',&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS '_tr(TANK)',&lt;br /&gt;
    CAST(SUM(IF (month_num=1, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_JAN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=2, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0)) AS DECIMAL(10,2) ) AS '_tr(MONTH_FEB_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=3, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=4, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_APR_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=5, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_MAY_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=6, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUN_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=7, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_JUL_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=8, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_AUG_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=9, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_SEP_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=10, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_OCT_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=11, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_NOV_ABBR)',&lt;br /&gt;
    CAST(SUM(IF (month_num=12, IF (flight_time &amp;gt;0 ,quantity/flight_time*600 , 0), 0))  AS DECIMAL(10,2) ) AS '_tr(MONTH_DEC_ABBR)',&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS '_tr(ANNUAL_AVERAGE)'&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        flight_tank_qty.quantity  AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num,&lt;br /&gt;
        (SELECT SUM(flight.duration) FROM flight WHERE aircraft_id = resource_id AND YEAR(flight.start_date) = $year AND MONTH(flight.start_date) = month_num ) AS flight_time&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Monthly refueling by resource type==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    aircraft_type_name AS _tr(RESOURCE_TYPE), tank_label AS _tr(TANK),&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS _tr(QUANTITY)&lt;br /&gt;
FROM&lt;br /&gt;
(&lt;br /&gt;
    SELECT resource_type.id AS aircraft_type_id,&lt;br /&gt;
           resource_type.name AS aircraft_type_name,&lt;br /&gt;
           tank.id AS tank_id, tank.label AS tank_label,&lt;br /&gt;
           CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
           MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
    LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY aircraft_type_id, tank_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fuel/Oil sum for each aircraft==&lt;br /&gt;
Unit is: unit of the tank &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT&lt;br /&gt;
    resource_name AS CallSign,&lt;br /&gt;
    CASE tank_type&lt;br /&gt;
        WHEN 1 THEN &amp;quot;AVGAS&amp;quot;&lt;br /&gt;
        WHEN 2 THEN &amp;quot;JET A1&amp;quot;&lt;br /&gt;
        WHEN 3 THEN &amp;quot;Oil&amp;quot;&lt;br /&gt;
        WHEN 4 THEN &amp;quot;SP95&amp;quot;&lt;br /&gt;
        WHEN 5 THEN &amp;quot;SP98&amp;quot;&lt;br /&gt;
        WHEN 6 THEN &amp;quot;GAZOLE&amp;quot;&lt;br /&gt;
    END AS Tank,&lt;br /&gt;
    SUM(IF (month_num=1, quantity, 0)) AS Janu,&lt;br /&gt;
    SUM(IF (month_num=2, quantity, 0)) AS Febr,&lt;br /&gt;
    SUM(IF (month_num=3, quantity, 0)) AS Marc,&lt;br /&gt;
    SUM(IF (month_num=4, quantity, 0)) AS Apri,&lt;br /&gt;
    SUM(IF (month_num=5, quantity, 0)) AS May,&lt;br /&gt;
    SUM(IF (month_num=6, quantity, 0)) AS June,&lt;br /&gt;
    SUM(IF (month_num=7, quantity, 0)) AS July,&lt;br /&gt;
    SUM(IF (month_num=8, quantity, 0)) AS Augu,&lt;br /&gt;
    SUM(IF (month_num=9, quantity, 0)) AS Sept,&lt;br /&gt;
    SUM(IF (month_num=10, quantity, 0)) AS Octo,&lt;br /&gt;
    SUM(IF (month_num=11, quantity, 0)) AS Nove,&lt;br /&gt;
    SUM(IF (month_num=12, quantity, 0)) AS Dece,&lt;br /&gt;
    SUM(quantity) AS SUM,&lt;br /&gt;
    CAST(SUM(quantity)/(SELECT SUM(duration) FROM flight WHERE aircraft_id = resource_id AND YEAR (start_date) = $year)*600  AS DECIMAL(10,2) ) AS Consumption&lt;br /&gt;
FROM&lt;br /&gt;
    (SELECT resource.name AS resource_name,&lt;br /&gt;
        resource.id AS resource_id,&lt;br /&gt;
        tank.tank_type_id AS tank_type,&lt;br /&gt;
        CAST( flight_tank_qty.quantity AS DECIMAL(10,2) ) AS quantity,&lt;br /&gt;
        MONTH(flight.start_date) AS month_num&lt;br /&gt;
    FROM tank&lt;br /&gt;
    LEFT JOIN flight_tank_qty ON flight_tank_qty.tank_id = tank.id&lt;br /&gt;
    LEFT JOIN flight ON flight.id = flight_tank_qty.flight_id&lt;br /&gt;
    LEFT JOIN resource ON resource.id = flight.aircraft_id&lt;br /&gt;
    WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
) AS my_table&lt;br /&gt;
GROUP BY resource_name, tank_type&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource.name AS _tr(RESOURCE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
LEFT JOIN resource ON (flight.aircraft_id = resource.id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY resource.id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Total refuelings by resource type over a year==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT resource_type.name AS _tr(RESOURCE_TYPE), tank.label AS _tr(TANK), SUM( quantity ) AS _tr(QUANTITY)&lt;br /&gt;
FROM tank&lt;br /&gt;
LEFT JOIN resource_type ON ( resource_type.id = tank.aircraft_type_id )&lt;br /&gt;
LEFT JOIN flight_tank_qty ON ( tank.id = flight_tank_qty.tank_id )&lt;br /&gt;
LEFT JOIN flight ON (flight.id = flight_tank_qty.flight_id)&lt;br /&gt;
WHERE YEAR(flight.start_date) = $year&lt;br /&gt;
GROUP BY aircraft_type_id, tank_type_id&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Error message queries=&lt;br /&gt;
==Flight without account movement==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT &lt;br /&gt;
DATE_FORMAT(flight.start_date,'%d/%m/%Y' ) AS Date,&lt;br /&gt;
TIME_FORMAT(flight.start_date,'%H:%i' ) AS Time,&lt;br /&gt;
resource.name AS Callsign,&lt;br /&gt;
person.last_name AS Lastname,&lt;br /&gt;
person.first_name AS Firstname,&lt;br /&gt;
CONCAT(FLOOR( flight.duration /600),':',&lt;br /&gt;
TIME_FORMAT(SEC_TO_TIME(( flight.duration/600 - FLOOR( flight.duration /600))*3600),'%i'))&lt;br /&gt;
AS FlightTime&lt;br /&gt;
FROM flight &lt;br /&gt;
LEFT JOIN flight_account_entry ON flight.id=flight_account_entry.flight_id&lt;br /&gt;
LEFT JOIN resource ON resource.id=flight.aircraft_id&lt;br /&gt;
LEFT JOIN flight_pilot ON flight_pilot.flight_id=flight.id&lt;br /&gt;
LEFT JOIN person ON person.id=flight_pilot.pilot_id&lt;br /&gt;
WHERE&lt;br /&gt;
flight_account_entry.account_entry_id IS NULL&lt;br /&gt;
AND flight.airborne=0&lt;br /&gt;
AND flight_pilot.num=0&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== movement without an account==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE account_id is null&lt;br /&gt;
SELECT id,flow_id,account_date,credit,debit,payment_description,comments FROM account_entry WHERE flow_id = 'xxxxxx'&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=[[Users exports 4|Users]]=&lt;/div&gt;</summary>
		<author><name>Lelhidam</name></author>
	</entry>
</feed>