IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Tableau dynamique croisé avec un SELECT COUNT()


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Tableau dynamique croisé avec un SELECT COUNT()
    Bonjour! Pouvez vous me venir en aide car voilà je rencontre quelques difficultés dans mon code, je voudrais affiché le nombre de ligne pour chaque stade de feuillaison allons de V0 à V5 regroupé par période Janvier jusqu'à décembre
    Voila ce que j'ai essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            SELECT coalesce(feuillaison.stade_feuillaison, 'Total') as stade_feuillaison,
    	COALESCE(IF(DATE_FORMAT(date_suivi_espece_cible,'%m')=10,COUNT(feuillaison.id_feuillaison),NULL),0) Octobre,
            COALESCE(IF(DATE_FORMAT(date_suivi_espece_cible,'%m')=11,COUNT(feuillaison.id_feuillaison),NULL),0) Novembre               
            FROM suivi_espece_cible
    	JOIN espececible_suivi ON espececible_suivi.id_espececible_suivi=suivi_espece_cible.id_espececible_suivi
            JOIN feuillaison ON feuillaison.id_feuillaison=suivi_espece_cible.id_feuillaison
    	WHERE espececible_suivi.id_espece=13		
            GROUP BY feuillaison.stade_feuillaison WITH ROLLUP;
    Le hic c'est que la condition IF(DATE_FORMAT(date_suivi_espece_cible,'%m')=10 ne semble pas fonctionné. Pouvez vous m'aider car je patine sur ce bout de code depuis un mois déjà...Merci!!!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Je vois un GROUP BY, mais pas de SUM/MIN/MAX/AVG... sur les autres colonnes.
    N'importe quel SGBD hors MySQL aurait rejeté cette requête.
    Peut-être que le problème vient de là.

    Sinon il faudrait nous en dire plus. Qu'est-ce que tu entends par "ne semble pas fonctionner" ? Erreur (quel message), résultat incohérent (voir ma première remarque), pas de résultat ?

    Tatayo.

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Rollanduboit.

    Le mieux serait de nous communiquer un jeu d'essai et le descriptif de vos tables.
    Sans cela, il est difficile de bien répondre à votre question.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Plus précisément, ce n'est pas l'absence d'agrégat associé au GROUP BY qui posera problème avec d'autres SGBD, c'est l'incohérence entre les colonnes de la clause SELECTet celles de la clause GROUP BY.

    Par contre essayez en conditionnant le comptage COUNT par un CASE WHEN..., ça devrait fonctionner mieux

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT coalesce(feuillaison.stade_feuillaison, 'Total')                          as stade_feuillaison,
         , count(case when(DATE_FORMAT(date_suivi_espece_cible,'%m')=10, then 1 end) as Octobre
    from ...
    group by ...

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut à tous.

    a) Vous faites l'usage du "with rollup" afin de faire apparaître une ligne ayant un total selon le regroupement.
    Or ce regroupement se fait aussi par mois. Pourquoi le mois n’apparaît pas dans le "group by" ?

    b) Le regroupement va créer des duplications de lignes, tel que vous le faites actuellement.

    c) je pense que vous prenez votre requête à l'envers.
    Vous ne devez pas partir de "suivi_espece_cible" et d'associer "espececible_suivi" et "feuillaison".
    Vous devez partir en premier de "feuillaison", puis ensuite vers "suivi_espece_cible" et terminer par "espececible_suivi".

    d) pourquoi faire un count() sur la colonne "id_feuillaison", si le regroupement se fait sur la colonne "stade_feuillaison" ?
    Oui, je sais que c'est la relation qui unie vos deux tables.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
             select  coalesce(t1.stade_feuillaison, 'Total')         as stade_feuillaison,
                     date_format(t3.date_suivi_espace_cible,'%Y-%m') as mois,
                     count(t1.id_feuillaison)
     
               from  `feuillaison`        as t1
     
    left outer join  `suivi_espece_cible` as t2
                 on  t2.id_feuillaison = t1.t1.id_feuillaison
     
    left outer join  `espececible_suivi`  as t3
                 on  t3.id_espececible_suivi = t2.id_espececible_suivi
     
              WHERE  t3.id_espece=13
           GROUP BY  t1.stade_feuillaison, mois WITH ROLLUP;
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour, je remercie tous ceux qui répondu à mon appel au secours car je galère vraiment sur ce cas là, alors que la date butoir sur ce projet arrive à grand pas. Voilà je vais essayer de bien expliquer sur mes attentes concernant la requête que j'ai l'intention de réaliser:

    J'aimerais afficher dynamiquement le nombre de stade de feuillaison par mois ou par année suivant la commande initialiser coté client

    exemple1 si par mois

    stade_feuillaison October November
    V0 5 0
    V1 0 20
    V2 4 10
    V3 7 0
    V4 10 4
    V5 0 0
    Total 26 34

    exemple2 si par mois an

    stade_feuillaison 2018 2019
    V0 115 100
    V1 0 20
    V2 4 10
    V3 7 0
    V4 10 4
    V5 0 0
    Total 136 124

    Pour l'instant j'ai pu mettre en place cette requête que je vous ai déjà montré au tout début:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT coalesce(feuillaison.stade_feuillaison, 'Total') as stade_feuillaison,
    COALESCE(IF(DATE_FORMAT(date_suivi_espece_cible,'%m')=10,COUNT(feuillaison.stade_feuillaison),NULL),0) Octobre,
    COALESCE(IF(DATE_FORMAT(date_suivi_espece_cible,'%Y')=11,COUNT(feuillaison.stade_feuillaison),NULL),0) Novembre               
    FROM suivi_espece_cible
    JOIN espececible_suivi ON espececible_suivi.id_espececible_suivi=suivi_espece_cible.id_espececible_suivi
    JOIN feuillaison ON feuillaison.id_feuillaison=suivi_espece_cible.id_feuillaison
    WHERE espececible_suivi.id_espece=13		
    GROUP BY feuillaison.stade_feuillaison WITH ROLLUP;
    cela m'a bien sortie la structure illustré sur l'exemple1 et l'exemple2 mais le COUNT() affiche 0 car elle ne reconnait pas la condition que j'ai effectuer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF(DATE_FORMAT(date_suivi_espece_cible,'%m')=10,
    donc est ce que quelqu'un connait un moyen de solutionné cela, Remarque j'ai essayé de remplacer le bout de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    COALESCE(IF(DATE_FORMAT(date_suivi_espece_cible,'%m')=10,COUNT(feuillaison.stade_feuillaison),NULL),0) Octobre,
    COALESCE(IF(DATE_FORMAT(date_suivi_espece_cible,'%Y')=11,COUNT(feuillaison.stade_feuillaison),NULL),0) Novembre
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SUM(IF(DATE_FORMAT(date_suivi_espece_cible,'%m')=10,COUNT(feuillaison.stade_feuillaison),0)) Octobre,
    SUM(IF(DATE_FORMAT(date_suivi_espece_cible,'%Y')=11,COUNT(feuillaison.stade_feuillaison),0)) Novembre
    et la condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     IF(DATE_FORMAT(date_suivi_espece_cible,'%m')=10
    marchait très bien seulement au lieu de faire un count() des nombres de ligne par stade_feuillaison cela m'a additionné les clé étrangère par stade_feuillaison ce qui n'est pas le but souhaité.

    Je vous ai mis ici la structure de ma base avec un jeu d'essaie copie conforme à la mienne! Merci d'avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    -- Structure de la table `espece`
    --
     
    CREATE TABLE IF NOT EXISTS `espece` (
    `id_espece` int(11) NOT NULL AUTO_INCREMENT,
    `nomBinomial` varchar(255) NOT NULL,
    `espece` varchar(255) NOT NULL,
    `genre` varchar(255) NOT NULL,
    `type_espece` varchar(255) NOT NULL,
    `famille` varchar(255) NOT NULL,
    `nom_vernac` varchar(50) NOT NULL,
    `statuts` varchar(255) NOT NULL,
    `utilisation` varchar(255) NOT NULL,
    PRIMARY KEY (`id_espece`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=22 ;
     
    --
    -- Contenu de la table `espece`
    --
     
    INSERT INTO `espece` (`id_espece`, `nomBinomial`, `espece`, `genre`, `type_espece`, `famille`, `nom_vernac`, `statuts`, `utilisation`) VALUES
    (1, 'Asterpeia amblyocarpa', 'Asterpeia ', 'amblyocarpa', 'Flore', 'ASTERACEAE', 'Manokamavo,manoky,manoky fotsy,manoky mena,andravo', 'CR', 'Bois de construction (SCHATZ, 1999)'),
    (2, 'Weinmannia commersonii', 'Weinmannia ', 'commersonii', 'Flore', 'CUNONIACEAE', 'hotraka,lalo,lalona', 'EN', 'Bois de construction,bois de chauffe,fruit comestible'),
    (3, 'Dalbergia louveli', 'Dalbergia ', 'louveli', 'Flore', 'FABACEAE', 'Andramena', 'EN CITES II', 'Bois d''oeuvre et bois de construction'),
    (4, 'Dalbergia maritima', 'Dalbergia ', 'maritima', 'Flore', 'FABACEAE', 'Volombodipona,tombobitsy(Antanosy)', 'EN CITES II', 'Bois d''oeuvre et bois de construction'),
    (5, 'Dalbergia normandii', 'Dalbergia ', 'normandii', 'Flore', 'FABACEAE', 'Voamboana', 'EN CITES II', 'Bois d''oeuvre et bois de construction'),
    (6, 'Tina thouarsiana', 'Tina ', 'thouarsiana', 'Flore', 'SAPINDACEAE', 'Hazompoza,ramiavondafa,somotrorana', 'EN', 'Bois de construction'),
    (7, 'Leptolaena multiflora', 'Leptolaena ', 'multiflora', 'Flore', 'SARCOLAENACEAE', 'Anjananjana,azananzana,birana,dilatra', 'EN', 'Bois de construction'),
    (8, 'Calophyllum chapelieri', 'Calophyllum ', 'chapelieri', 'Flore', 'ANACARDIACEAE', 'Foraha,makaleony,sorapaha,vintanina,vintaninaberav', 'VU', 'Bois de construction et manche à outil'),
    (9, 'Symphonia fasciculata', 'Symphonia ', 'fasciculata', 'Flore', 'CLUSIACEAE', 'Hazimberavina,hazina,hazinibe,kijy,kizavavy,fatra', 'VU', 'Bois de construction,bois de chauffe,huile essentielle,plante medicinale'),
    (10, 'Cordyla haraka', 'Cordyla ', 'haraka', 'Flore', 'FABACEAE', 'Haraka', 'VU', 'Manche à outil,gaulette,cercueil'),
    (11, 'Dalbergia baroni', 'Dalbergia ', 'baroni', 'Flore', 'FABACEAE', 'Hazovolo,voamboana', 'VU CITES II', 'Bois d''oeuvre et bois de construction'),
    (12, 'Dalbergia chapelieri', 'Dalbergia ', 'chapelieri', 'Flore', 'FABACEAE', 'Savoka,soroka,sovoka', 'VU CITES II', 'Bois d''oeuvre et bois de construction'),
    (13, 'Dalbergia madagascariensis', 'Dalbergia ', 'madagascariensis', 'Flore', 'FABACEAE', 'Hazovola,hazovola mena,hazovolo,manary,manary be,m', 'VU CITES II', 'Bois d''oeuvre et bois de construction'),
    (14, 'Dalbergia monticola', 'Dalbergia ', 'monticola', 'Flore', 'FABACEAE', 'Voamboana(Perinet);Hazovola(Maroantsetra);Tsiandal', 'VU CITES II', 'Bois d''oeuvre et bois de construction'),
    (15, 'Labramia bojeri', 'Labramia ', 'bojeri', 'Flore', 'SAPOTACEAE', 'Felambarika,fotajana', 'VU', 'Bois de construction'),
    (16, 'Canarium lamianum', 'Canarium ', 'lamianum', 'Flore', 'BURSERACEAE', 'Ramy', 'DD', 'Bois de construction'),
    (17, 'Canarium obovatum', 'Canarium ', 'obovatum', 'Flore', 'BURSERACEAE', 'Ramy', 'DD', 'Bois de construction,manche à outil,gaulette,production de gomme'),
    (18, 'Ocotea alveolata', 'Ocotea ', 'alveolata', 'Flore', 'LAURACEAE', 'Varongy,varongilahy,varongimainty,varongimena', 'DD', 'Bois d''oeuvre et bois de construction'),
    (19, 'Ocotea racemosa', 'Ocotea ', 'racemosa', 'Flore', 'LAURACEAE', 'Varongifotsy,varongikely,varongilahy,varongimainty', 'DD', 'Bois d''oeuvre et bois de construction,fruit comestible'),
    (20, 'Faucherea tampolensis', 'Faucherea ', 'tampolensis', 'Flore', 'SAPOTACEAE', 'Nanto,nantobariatra,natobariatra,natoboraka,natoji', 'DD', 'Bois de construction'),
    (21, 'Ardeola idea ', 'Ardeola ', 'idea ', 'Faune', 'ARDEIDAE', 'Héron crabier blanc', 'Attraction touristique', 'EN');
     
    -- --------------------------------------------------------
    -- Structure de la table `site_coketes`
    --
     
    CREATE TABLE IF NOT EXISTS `site_coketes` (
    `id_sitecoketes` int(11) NOT NULL AUTO_INCREMENT,
    `nom_sitecoketes` varchar(255) NOT NULL,
    `superficie_sitecoketes` float(15,2) DEFAULT NULL,
    `statut` varchar(255) DEFAULT NULL,
    `etat` int(11) DEFAULT NULL,
    PRIMARY KEY (`id_sitecoketes`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;
     
    --
    -- Contenu de la table `site_coketes`
    --
     
    INSERT INTO `site_coketes` (`id_sitecoketes`, `nom_sitecoketes`, `superficie_sitecoketes`, `statut`, `etat`) VALUES
    (1, 'Tampolo', NULL, 'Nouvelle aire protégée', 1),
    (2, 'Pointe à Larrée', NULL, 'Nouvelle aire protégée', 1),
    (3, 'Betampona', NULL, 'Réserve naturelle intégrale', 1),
    (4, 'Manombo', NULL, 'Réserve spéciale', 1),
    (5, 'Agnalazaha(Mahabo mananivo)', NULL, 'Nouvelle aire protégée', 1),
    (6, 'Ambongamarina', 0.00, '', 1),
    (7, 'Tsiazompaniry', NULL, NULL, 1),
    (8, 'Bekorakaka', NULL, NULL, 1),
    (9, 'Sandrandahy', NULL, NULL, 1),
    (10, 'Ranomafana', NULL, 'Parc national', 1),
    (11, 'Mahavavy Kinkony', NULL, 'Nouvelle aire protégée', 1),
    (12, 'Ankarafantsika', NULL, 'Parc national', 1),
    (13, 'Bemanevika', NULL, 'Aire protégée', 1),
    (14, 'Mandrozo', NULL, 'Aire protégée', 1),
    (15, 'Tsimembo Manambolomaty', NULL, 'Aire protégée', 1),
    (16, 'Ambondrobe(Ankevo)', NULL, 'Nouvelle aire protégée', 1),
    (17, 'Tsimbazaza', NULL, 'Parc', 1),
    (18, 'Central', NULL, NULL, 1);
     
    -- --------------------------------------------------------
     
    --
    -- Structure de la table `espececible_suivi`
    --
     
    CREATE TABLE IF NOT EXISTS `espececible_suivi` (
    `id_espececible_suivi` int(11) NOT NULL AUTO_INCREMENT,
    `numero_espececible` varchar(255) CHARACTER SET utf8 NOT NULL,
    `longitude` varchar(255) CHARACTER SET utf8 NOT NULL,
    `latitude` varchar(255) CHARACTER SET utf8 NOT NULL,
    `altitude` varchar(255) CHARACTER SET utf8 NOT NULL,
    `id_espece` int(11) NOT NULL,
    `id_sitecoketes` int(11) NOT NULL,
    PRIMARY KEY (`id_espececible_suivi`),
    KEY `id_sitecoketes` (`id_sitecoketes`),
    KEY `id_espece` (`id_espece`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
     
     
    -- Contenu de la table `espececible_suivi`
    --
     
    INSERT INTO `espececible_suivi` (`id_espececible_suivi`, `numero_espececible`, `longitude`, `latitude`, `altitude`, `id_espece`, `id_sitecoketes`) VALUES
    (1, '01', '1', '1', '1', 13, 3);
     
    --
     
    -- --------------------------------------------------------
    -- Structure de la table `feuillaison`
    --
     
    CREATE TABLE IF NOT EXISTS `feuillaison` (
    `id_feuillaison` int(11) NOT NULL AUTO_INCREMENT,
    `stade_feuillaison` varchar(50) NOT NULL,
    `description` varchar(255) DEFAULT NULL,
    PRIMARY KEY (`id_feuillaison`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
     
    --
    -- Contenu de la table `feuillaison`
    --
     
    INSERT INTO `feuillaison` (`id_feuillaison`, `stade_feuillaison`, `description`) VALUES
    (1, ' Stade V0', 'rameaux nus, sans feuilles'),
    (2, ' Stade V1', 'formation des bourgeons foliaires'),
    (3, ' Stade V2', ' bourgeons foliaires + feuilles épanouies'),
    (4, ' Stade V3', 'feuillage développé et abondant sur rameaux'),
    (5, ' Stade V4', ' feuilles vertes + feuilles sèches ou ayant changé de couleur'),
    (6, ' Stade V5', 'plus de 50% des organes dc l''individu ont des feuilles sèches et chute des feuilles');
     
    -- --------------------------------------------------------
    --
    -- Structure de la table `suivi_espece_cible`
    --
     
    CREATE TABLE IF NOT EXISTS `suivi_espece_cible` (
    `id_suivi_espececible` int(11) NOT NULL AUTO_INCREMENT,
    `date_suivi_espece_cible` date DEFAULT NULL,
    `observation_espececible` text,
    `id_espececible_suivi` int(11) DEFAULT NULL,
    `id_feuillaison` int(11) DEFAULT NULL,
    PRIMARY KEY (`id_suivi_espececible`),
    KEY `id_feuillaison` (`id_feuillaison`),
    KEY `id_espececible_suivi` (`id_espececible_suivi`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
     
    -- --------------------------------------------------------
    -- Contenu de la table `suivi_espece_cible`
    --
     
    INSERT INTO `suivi_espece_cible` (`id_suivi_espececible`, `date_suivi_espece_cible`, `observation_espececible`, `id_espececible_suivi`,`id_feuillaison`) VALUES
    (1, '2019-10-13', 'ok', 1, 3),
    (2, '2019-10-01', 'ok', 1, 4),
    (3, '2019-10-31', 'ok', 1, 4),
    (4, '2019-10-30', 'ok', 1, 3),
    (5, '2019-10-31', 'ok', 1, 3),
    (6, '2019-10-31', 'ok', 1, 2),
    (7, '2019-10-30', 'ok', 1, 4),
    (8, '2019-11-11', 'ok', 1, 1);

  7. #7
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut RollanduBois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    269
    270
    271
    272
    273
    274
    275
    276
    277
    278
    279
    280
    281
    282
    283
    284
    285
    286
    287
    288
    289
    290
    291
    292
    293
    294
    295
    296
    297
    298
    299
    300
    301
    302
    303
    304
    305
    306
    307
    308
    309
    310
    311
    312
    313
    314
    315
    316
    317
    318
    319
    320
    321
    322
    323
    324
    325
    326
    327
    328
    329
    330
    331
    332
    333
    334
    335
    336
    337
    338
    339
    340
    341
    342
    343
    344
    345
    346
    347
    348
    349
    350
    351
    352
    353
    354
    355
    356
    357
    358
    359
    360
    361
    362
    363
    364
    365
    366
    367
    368
    369
    370
    371
    372
    373
    374
    375
    376
    377
    378
    379
    380
    381
    382
    383
    384
    385
    386
    387
    388
    389
    390
    391
    392
    393
    394
    395
    396
    397
    398
    399
    400
    401
    402
    403
    404
    405
    406
    407
    408
    409
    410
    411
    412
    413
    414
    415
    416
    417
    418
    419
    420
    421
    422
    423
    424
    425
    426
    427
    428
    429
    430
    431
    432
    433
    434
    435
    436
    437
    438
    439
    440
    441
    442
    443
    444
    445
    446
    447
    448
    449
    450
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    drop table if exists `espece`
    --------------
     
    --------------
    CREATE TABLE IF NOT EXISTS `espece`
    ( `id_espece`    integer unsigned NOT NULL AUTO_INCREMENT primary key,
      `nomBinomial`  varchar(255)     NOT NULL,
      `espece`       varchar(255)     NOT NULL,
      `genre`        varchar(255)     NOT NULL,
      `type_espece`  varchar(255)     NOT NULL,
      `famille`      varchar(255)     NOT NULL,
      `nom_vernac`   varchar(255)     NOT NULL,
      `statuts`      varchar(255)     NOT NULL,
      `utilisation`  varchar(255)     NOT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `espece` (`nomBinomial`, `espece`, `genre`, `type_espece`, `famille`, `nom_vernac`, `statuts`, `utilisation`) VALUES
      ('Asterpeia amblyocarpa',      'Asterpeia ',   'amblyocarpa',      'Flore', 'ASTERACEAE',     'Manokamavo,manoky,manoky fotsy,manoky mena,andravo', 'CR',                     'Bois de construction (SCHATZ, 1999)'),
      ('Weinmannia commersonii',     'Weinmannia ',  'commersonii',      'Flore', 'CUNONIACEAE',    'hotraka,lalo,lalona',                                'EN',                     'Bois de construction,bois de chauffe,fruit comestible'),
      ('Dalbergia louveli',          'Dalbergia ',   'louveli',          'Flore', 'FABACEAE',       'Andramena',                                          'EN CITES II',            'Bois d''oeuvre et bois de construction'),
      ('Dalbergia maritima',         'Dalbergia ',   'maritima',         'Flore', 'FABACEAE',       'Volombodipona,tombobitsy(Antanosy)',                 'EN CITES II',            'Bois d''oeuvre et bois de construction'),
      ('Dalbergia normandii',        'Dalbergia ',   'normandii',        'Flore', 'FABACEAE',       'Voamboana',                                          'EN CITES II',            'Bois d''oeuvre et bois de construction'),
      ('Tina thouarsiana',           'Tina ',        'thouarsiana',      'Flore', 'SAPINDACEAE',    'Hazompoza,ramiavondafa,somotrorana',                 'EN',                     'Bois de construction'),
      ('Leptolaena multiflora',      'Leptolaena ',  'multiflora',       'Flore', 'SARCOLAENACEAE', 'Anjananjana,azananzana,birana,dilatra',              'EN',                     'Bois de construction'),
      ('Calophyllum chapelieri',     'Calophyllum ', 'chapelieri',       'Flore', 'ANACARDIACEAE',  'Foraha,makaleony,sorapaha,vintanina,vintaninaberav', 'VU',                     'Bois de construction et manche à outil'),
      ('Symphonia fasciculata',      'Symphonia ',   'fasciculata',      'Flore', 'CLUSIACEAE',     'Hazimberavina,hazina,hazinibe,kijy,kizavavy,fatra',  'VU',                     'Bois de construction,bois de chauffe,huile essentielle,plante medicinale'),
      ('Cordyla haraka',             'Cordyla ',     'haraka',           'Flore', 'FABACEAE',       'Haraka',                                             'VU',                     'Manche à outil,gaulette,cercueil'),
      ('Dalbergia baroni',           'Dalbergia ',   'baroni',           'Flore', 'FABACEAE',       'Hazovolo,voamboana',                                 'VU CITES II',            'Bois d''oeuvre et bois de construction'),
      ('Dalbergia chapelieri',       'Dalbergia ',   'chapelieri',       'Flore', 'FABACEAE',       'Savoka,soroka,sovoka',                               'VU CITES II',            'Bois d''oeuvre et bois de construction'),
      ('Dalbergia madagascariensis', 'Dalbergia ',   'madagascariensis', 'Flore', 'FABACEAE',       'Hazovola,hazovola mena,hazovolo,manary,manary be,m', 'VU CITES II',            'Bois d''oeuvre et bois de construction'),
      ('Dalbergia monticola',        'Dalbergia ',   'monticola',        'Flore', 'FABACEAE',       'Voamboana(Perinet);Hazovola(Maroantsetra);Tsiandal', 'VU CITES II',            'Bois d''oeuvre et bois de construction'),
      ('Labramia bojeri',            'Labramia ',    'bojeri',           'Flore', 'SAPOTACEAE',     'Felambarika,fotajana',                               'VU',                     'Bois de construction'),
      ('Canarium lamianum',          'Canarium ',    'lamianum',         'Flore', 'BURSERACEAE',    'Ramy',                                               'DD',                     'Bois de construction'),
      ('Canarium obovatum',          'Canarium ',    'obovatum',         'Flore', 'BURSERACEAE',    'Ramy',                                               'DD',                     'Bois de construction,manche à outil,gaulette,production de gomme'),
      ('Ocotea alveolata',           'Ocotea ',      'alveolata',        'Flore', 'LAURACEAE',      'Varongy,varongilahy,varongimainty,varongimena',      'DD',                     'Bois d''oeuvre et bois de construction'),
      ('Ocotea racemosa',            'Ocotea ',      'racemosa',         'Flore', 'LAURACEAE',      'Varongifotsy,varongikely,varongilahy,varongimainty', 'DD',                     'Bois d''oeuvre et bois de construction,fruit comestible'),
      ('Faucherea tampolensis',      'Faucherea ',   'tampolensis',      'Flore', 'SAPOTACEAE',     'Nanto,nantobariatra,natobariatra,natoboraka,natoji', 'DD',                     'Bois de construction'),
      ('Ardeola idea ',              'Ardeola ',     'idea ',            'Faune', 'ARDEIDAE',       'Héron crabier blanc',                                'Attraction touristique', 'EN')
    --------------
     
    --------------
    select * from `espece`
    --------------
     
    +-----------+----------------------------+--------------+------------------+-------------+----------------+----------------------------------------------------+------------------------+--------------------------------------------------------------------------+
    | id_espece | nomBinomial                | espece       | genre            | type_espece | famille        | nom_vernac                                         | statuts                | utilisation                                                              |
    +-----------+----------------------------+--------------+------------------+-------------+----------------+----------------------------------------------------+------------------------+--------------------------------------------------------------------------+
    |         1 | Asterpeia amblyocarpa      | Asterpeia    | amblyocarpa      | Flore       | ASTERACEAE     | Manokamavo,manoky,manoky fotsy,manoky mena,andravo | CR                     | Bois de construction (SCHATZ, 1999)                                      |
    |         2 | Weinmannia commersonii     | Weinmannia   | commersonii      | Flore       | CUNONIACEAE    | hotraka,lalo,lalona                                | EN                     | Bois de construction,bois de chauffe,fruit comestible                    |
    |         3 | Dalbergia louveli          | Dalbergia    | louveli          | Flore       | FABACEAE       | Andramena                                          | EN CITES II            | Bois d'oeuvre et bois de construction                                    |
    |         4 | Dalbergia maritima         | Dalbergia    | maritima         | Flore       | FABACEAE       | Volombodipona,tombobitsy(Antanosy)                 | EN CITES II            | Bois d'oeuvre et bois de construction                                    |
    |         5 | Dalbergia normandii        | Dalbergia    | normandii        | Flore       | FABACEAE       | Voamboana                                          | EN CITES II            | Bois d'oeuvre et bois de construction                                    |
    |         6 | Tina thouarsiana           | Tina         | thouarsiana      | Flore       | SAPINDACEAE    | Hazompoza,ramiavondafa,somotrorana                 | EN                     | Bois de construction                                                     |
    |         7 | Leptolaena multiflora      | Leptolaena   | multiflora       | Flore       | SARCOLAENACEAE | Anjananjana,azananzana,birana,dilatra              | EN                     | Bois de construction                                                     |
    |         8 | Calophyllum chapelieri     | Calophyllum  | chapelieri       | Flore       | ANACARDIACEAE  | Foraha,makaleony,sorapaha,vintanina,vintaninaberav | VU                     | Bois de construction et manche à outil                                   |
    |         9 | Symphonia fasciculata      | Symphonia    | fasciculata      | Flore       | CLUSIACEAE     | Hazimberavina,hazina,hazinibe,kijy,kizavavy,fatra  | VU                     | Bois de construction,bois de chauffe,huile essentielle,plante medicinale |
    |        10 | Cordyla haraka             | Cordyla      | haraka           | Flore       | FABACEAE       | Haraka                                             | VU                     | Manche à outil,gaulette,cercueil                                         |
    |        11 | Dalbergia baroni           | Dalbergia    | baroni           | Flore       | FABACEAE       | Hazovolo,voamboana                                 | VU CITES II            | Bois d'oeuvre et bois de construction                                    |
    |        12 | Dalbergia chapelieri       | Dalbergia    | chapelieri       | Flore       | FABACEAE       | Savoka,soroka,sovoka                               | VU CITES II            | Bois d'oeuvre et bois de construction                                    |
    |        13 | Dalbergia madagascariensis | Dalbergia    | madagascariensis | Flore       | FABACEAE       | Hazovola,hazovola mena,hazovolo,manary,manary be,m | VU CITES II            | Bois d'oeuvre et bois de construction                                    |
    |        14 | Dalbergia monticola        | Dalbergia    | monticola        | Flore       | FABACEAE       | Voamboana(Perinet);Hazovola(Maroantsetra);Tsiandal | VU CITES II            | Bois d'oeuvre et bois de construction                                    |
    |        15 | Labramia bojeri            | Labramia     | bojeri           | Flore       | SAPOTACEAE     | Felambarika,fotajana                               | VU                     | Bois de construction                                                     |
    |        16 | Canarium lamianum          | Canarium     | lamianum         | Flore       | BURSERACEAE    | Ramy                                               | DD                     | Bois de construction                                                     |
    |        17 | Canarium obovatum          | Canarium     | obovatum         | Flore       | BURSERACEAE    | Ramy                                               | DD                     | Bois de construction,manche à outil,gaulette,production de gomme         |
    |        18 | Ocotea alveolata           | Ocotea       | alveolata        | Flore       | LAURACEAE      | Varongy,varongilahy,varongimainty,varongimena      | DD                     | Bois d'oeuvre et bois de construction                                    |
    |        19 | Ocotea racemosa            | Ocotea       | racemosa         | Flore       | LAURACEAE      | Varongifotsy,varongikely,varongilahy,varongimainty | DD                     | Bois d'oeuvre et bois de construction,fruit comestible                   |
    |        20 | Faucherea tampolensis      | Faucherea    | tampolensis      | Flore       | SAPOTACEAE     | Nanto,nantobariatra,natobariatra,natoboraka,natoji | DD                     | Bois de construction                                                     |
    |        21 | Ardeola idea               | Ardeola      | idea             | Faune       | ARDEIDAE       | Héron crabier blanc                                | Attraction touristique | EN                                                                       |
    +-----------+----------------------------+--------------+------------------+-------------+----------------+----------------------------------------------------+------------------------+--------------------------------------------------------------------------+
    --------------
    commit
    --------------
     
    --------------
    drop table if exists `site_coketes`
    --------------
     
    --------------
    CREATE TABLE IF NOT EXISTS `site_coketes`
    ( `id_sitecoketes`          integer unsigned NOT NULL AUTO_INCREMENT primary key,
      `nom_sitecoketes`         varchar(255)     NOT NULL,
      `superficie_sitecoketes`  decimal(15,2)               DEFAULT NULL,
      `statut`                  varchar(255)                DEFAULT NULL,
      `etat`                    integer unsigned            DEFAULT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `site_coketes` (`nom_sitecoketes`, `superficie_sitecoketes`, `statut`, `etat`) VALUES
      ('Tampolo',                     NULL, 'Nouvelle aire protégée',      1),
      ('Pointe à Larrée',             NULL, 'Nouvelle aire protégée',      1),
      ('Betampona',                   NULL, 'Réserve naturelle intégrale', 1),
      ('Manombo',                     NULL, 'Réserve spéciale',            1),
      ('Agnalazaha(Mahabo mananivo)', NULL, 'Nouvelle aire protégée',      1),
      ('Ambongamarina',               0.00, '',                            1),
      ('Tsiazompaniry',               NULL, NULL,                          1),
      ('Bekorakaka',                  NULL, NULL,                          1),
      ('Sandrandahy',                 NULL, NULL,                          1),
      ('Ranomafana',                  NULL, 'Parc national',               1),
      ('Mahavavy Kinkony',            NULL, 'Nouvelle aire protégée',      1),
      ('Ankarafantsika',              NULL, 'Parc national',               1),
      ('Bemanevika',                  NULL, 'Aire protégée',               1),
      ('Mandrozo',                    NULL, 'Aire protégée',               1),
      ('Tsimembo Manambolomaty',      NULL, 'Aire protégée',               1),
      ('Ambondrobe(Ankevo)',          NULL, 'Nouvelle aire protégée',      1),
      ('Tsimbazaza',                  NULL, 'Parc',                        1),
      ('Central',                     NULL, NULL,                          1)
    --------------
     
    --------------
    select * from `site_coketes`
    --------------
     
    +----------------+-----------------------------+------------------------+-----------------------------+------+
    | id_sitecoketes | nom_sitecoketes             | superficie_sitecoketes | statut                      | etat |
    +----------------+-----------------------------+------------------------+-----------------------------+------+
    |              1 | Tampolo                     |                   NULL | Nouvelle aire protégée      |    1 |
    |              2 | Pointe à Larrée             |                   NULL | Nouvelle aire protégée      |    1 |
    |              3 | Betampona                   |                   NULL | Réserve naturelle intégrale |    1 |
    |              4 | Manombo                     |                   NULL | Réserve spéciale            |    1 |
    |              5 | Agnalazaha(Mahabo mananivo) |                   NULL | Nouvelle aire protégée      |    1 |
    |              6 | Ambongamarina               |                   0.00 |                             |    1 |
    |              7 | Tsiazompaniry               |                   NULL | NULL                        |    1 |
    |              8 | Bekorakaka                  |                   NULL | NULL                        |    1 |
    |              9 | Sandrandahy                 |                   NULL | NULL                        |    1 |
    |             10 | Ranomafana                  |                   NULL | Parc national               |    1 |
    |             11 | Mahavavy Kinkony            |                   NULL | Nouvelle aire protégée      |    1 |
    |             12 | Ankarafantsika              |                   NULL | Parc national               |    1 |
    |             13 | Bemanevika                  |                   NULL | Aire protégée               |    1 |
    |             14 | Mandrozo                    |                   NULL | Aire protégée               |    1 |
    |             15 | Tsimembo Manambolomaty      |                   NULL | Aire protégée               |    1 |
    |             16 | Ambondrobe(Ankevo)          |                   NULL | Nouvelle aire protégée      |    1 |
    |             17 | Tsimbazaza                  |                   NULL | Parc                        |    1 |
    |             18 | Central                     |                   NULL | NULL                        |    1 |
    +----------------+-----------------------------+------------------------+-----------------------------+------+
    --------------
    commit
    --------------
     
    --------------
    drop table if exists `espececible_suivi`
    --------------
     
    --------------
    CREATE TABLE IF NOT EXISTS `espececible_suivi`
    ( `id_espececible_suivi`  integer unsigned NOT NULL AUTO_INCREMENT primary key,
      `numero_espececible`    varchar(255)     NOT NULL,
      `longitude`             varchar(255)     NOT NULL,
      `latitude`              varchar(255)     NOT NULL,
      `altitude`              varchar(255)     NOT NULL,
      `id_espece`             integer unsigned NOT NULL,
      `id_sitecoketes`        integer unsigned NOT NULL,
      CONSTRAINT `FK_site_coketes` FOREIGN KEY (`id_sitecoketes`) REFERENCES `site_coketes` (`id_sitecoketes`) ON DELETE CASCADE ON UPDATE CASCADE,
      CONSTRAINT `FK_espece`       FOREIGN KEY (`id_espece`)      REFERENCES `espece`       (`id_espece`)      ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `espececible_suivi` (`numero_espececible`, `longitude`, `latitude`, `altitude`, `id_espece`, `id_sitecoketes`) VALUES
      ('01', '1', '1', '1', 13, 3)
    --------------
     
    --------------
    select * from `site_coketes`
    --------------
     
    +----------------+-----------------------------+------------------------+-----------------------------+------+
    | id_sitecoketes | nom_sitecoketes             | superficie_sitecoketes | statut                      | etat |
    +----------------+-----------------------------+------------------------+-----------------------------+------+
    |              1 | Tampolo                     |                   NULL | Nouvelle aire protégée      |    1 |
    |              2 | Pointe à Larrée             |                   NULL | Nouvelle aire protégée      |    1 |
    |              3 | Betampona                   |                   NULL | Réserve naturelle intégrale |    1 |
    |              4 | Manombo                     |                   NULL | Réserve spéciale            |    1 |
    |              5 | Agnalazaha(Mahabo mananivo) |                   NULL | Nouvelle aire protégée      |    1 |
    |              6 | Ambongamarina               |                   0.00 |                             |    1 |
    |              7 | Tsiazompaniry               |                   NULL | NULL                        |    1 |
    |              8 | Bekorakaka                  |                   NULL | NULL                        |    1 |
    |              9 | Sandrandahy                 |                   NULL | NULL                        |    1 |
    |             10 | Ranomafana                  |                   NULL | Parc national               |    1 |
    |             11 | Mahavavy Kinkony            |                   NULL | Nouvelle aire protégée      |    1 |
    |             12 | Ankarafantsika              |                   NULL | Parc national               |    1 |
    |             13 | Bemanevika                  |                   NULL | Aire protégée               |    1 |
    |             14 | Mandrozo                    |                   NULL | Aire protégée               |    1 |
    |             15 | Tsimembo Manambolomaty      |                   NULL | Aire protégée               |    1 |
    |             16 | Ambondrobe(Ankevo)          |                   NULL | Nouvelle aire protégée      |    1 |
    |             17 | Tsimbazaza                  |                   NULL | Parc                        |    1 |
    |             18 | Central                     |                   NULL | NULL                        |    1 |
    +----------------+-----------------------------+------------------------+-----------------------------+------+
    --------------
    commit
    --------------
     
    --------------
    drop table if exists `feuillaison`
    --------------
     
    --------------
    CREATE TABLE IF NOT EXISTS `feuillaison`
    ( `id_feuillaison`     integer unsigned NOT NULL AUTO_INCREMENT primary key,
      `stade_feuillaison`  varchar(255)     NOT NULL,
      `description`        varchar(255)                DEFAULT NULL
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `feuillaison` (`stade_feuillaison`, `description`) VALUES
      ('Stade V0', 'rameaux nus, sans feuilles'),
      ('Stade V1', 'formation des bourgeons foliaires'),
      ('Stade V2', 'bourgeons foliaires + feuilles épanouies'),
      ('Stade V3', 'feuillage développé et abondant sur rameaux'),
      ('Stade V4', 'feuilles vertes + feuilles sèches ou ayant changé de couleur'),
      ('Stade V5', 'plus de 50% des organes dc l''individu ont des feuilles sèches et chute des feuilles')
    --------------
     
    --------------
    select * from `feuillaison`
    --------------
     
    +----------------+-------------------+-------------------------------------------------------------------------------------+
    | id_feuillaison | stade_feuillaison | description                                                                         |
    +----------------+-------------------+-------------------------------------------------------------------------------------+
    |              1 | Stade V0          | rameaux nus, sans feuilles                                                          |
    |              2 | Stade V1          | formation des bourgeons foliaires                                                   |
    |              3 | Stade V2          | bourgeons foliaires + feuilles épanouies                                            |
    |              4 | Stade V3          | feuillage développé et abondant sur rameaux                                         |
    |              5 | Stade V4          | feuilles vertes + feuilles sèches ou ayant changé de couleur                        |
    |              6 | Stade V5          | plus de 50% des organes dc l'individu ont des feuilles sèches et chute des feuilles |
    +----------------+-------------------+-------------------------------------------------------------------------------------+
    --------------
    commit
    --------------
     
    --------------
    drop table if exists `suivi_espece_cible`
    --------------
     
    --------------
    CREATE TABLE IF NOT EXISTS `suivi_espece_cible`
    ( `id_suivi_espececible`    integer unsigned NOT NULL AUTO_INCREMENT primary key,
      `date_suivi_espece_cible` date                      DEFAULT NULL,
      `observation_espececible` text             NOT NULL,
      `id_espececible_suivi`    integer unsigned          DEFAULT NULL,
      `id_feuillaison`          integer unsigned          DEFAULT NULL,
      CONSTRAINT `FK_id_feuillaison`    FOREIGN KEY (`id_feuillaison`)       REFERENCES `feuillaison`       (`id_feuillaison`)       ON DELETE CASCADE ON UPDATE CASCADE,
      CONSTRAINT `FK_espececible_suivi` FOREIGN KEY (`id_espececible_suivi`) REFERENCES `espececible_suivi` (`id_espececible_suivi`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB
      DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
      ROW_FORMAT=COMPRESSED
    --------------
     
    --------------
    INSERT INTO `suivi_espece_cible` (`date_suivi_espece_cible`, `observation_espececible`, `id_espececible_suivi`,`id_feuillaison`) VALUES
      ('2019-10-13', 'ok', 1, 3),
      ('2019-10-01', 'ok', 1, 4),
      ('2019-10-31', 'ok', 1, 4),
      ('2019-10-30', 'ok', 1, 3),
      ('2019-10-31', 'ok', 1, 3),
      ('2019-10-31', 'ok', 1, 2),
      ('2019-10-30', 'ok', 1, 4),
      ('2019-11-11', 'ok', 1, 1)
    --------------
     
    --------------
    select * from `suivi_espece_cible`
    --------------
     
    +----------------------+-------------------------+-------------------------+----------------------+----------------+
    | id_suivi_espececible | date_suivi_espece_cible | observation_espececible | id_espececible_suivi | id_feuillaison |
    +----------------------+-------------------------+-------------------------+----------------------+----------------+
    |                    1 | 2019-10-13              | ok                      |                    1 |              3 |
    |                    2 | 2019-10-01              | ok                      |                    1 |              4 |
    |                    3 | 2019-10-31              | ok                      |                    1 |              4 |
    |                    4 | 2019-10-30              | ok                      |                    1 |              3 |
    |                    5 | 2019-10-31              | ok                      |                    1 |              3 |
    |                    6 | 2019-10-31              | ok                      |                    1 |              2 |
    |                    7 | 2019-10-30              | ok                      |                    1 |              4 |
    |                    8 | 2019-11-11              | ok                      |                    1 |              1 |
    +----------------------+-------------------------+-------------------------+----------------------+----------------+
    --------------
    commit
    --------------
     
    --------------
    drop view if exists `vue_mois`
    --------------
     
    --------------
    create view `vue_mois` as
        select  t1.stade_feuillaison,
                t3.id_espece,
                year(t2.date_suivi_espece_cible)                                        as annee,
                sum(case when month(t2.date_suivi_espece_cible) = 01 then 1 else 0 end) as janvier,
                sum(case when month(t2.date_suivi_espece_cible) = 02 then 1 else 0 end) as fevrier,
                sum(case when month(t2.date_suivi_espece_cible) = 03 then 1 else 0 end) as mars,
                sum(case when month(t2.date_suivi_espece_cible) = 04 then 1 else 0 end) as avril,
                sum(case when month(t2.date_suivi_espece_cible) = 05 then 1 else 0 end) as mai,
                sum(case when month(t2.date_suivi_espece_cible) = 06 then 1 else 0 end) as juin,
                sum(case when month(t2.date_suivi_espece_cible) = 07 then 1 else 0 end) as juillet,
                sum(case when month(t2.date_suivi_espece_cible) = 08 then 1 else 0 end) as aout,
                sum(case when month(t2.date_suivi_espece_cible) = 09 then 1 else 0 end) as septembre,
                sum(case when month(t2.date_suivi_espece_cible) = 10 then 1 else 0 end) as octobre,
                sum(case when month(t2.date_suivi_espece_cible) = 11 then 1 else 0 end) as novembre,
                sum(case when month(t2.date_suivi_espece_cible) = 12 then 1 else 0 end) as decembre
     
          from  `feuillaison`        as t1
     
    inner join  `suivi_espece_cible` as t2
            on  t2.id_feuillaison = t1.id_feuillaison
     
    inner join  `espececible_suivi`  as t3
            on  t3.id_espececible_suivi = t2.id_espececible_suivi
     
      group by  t1.stade_feuillaison, t3.id_espece, annee
    --------------
     
    --------------
    select * from `vue_mois`
    --------------
     
    +-------------------+-----------+-------+---------+---------+------+-------+------+------+---------+------+-----------+---------+----------+----------+
    | stade_feuillaison | id_espece | annee | janvier | fevrier | mars | avril | mai  | juin | juillet | aout | septembre | octobre | novembre | decembre |
    +-------------------+-----------+-------+---------+---------+------+-------+------+------+---------+------+-----------+---------+----------+----------+
    | Stade V2          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       3 |        0 |        0 |
    | Stade V3          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       3 |        0 |        0 |
    | Stade V1          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       1 |        0 |        0 |
    | Stade V0          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       0 |        1 |        0 |
    +-------------------+-----------+-------+---------+---------+------+-------+------+------+---------+------+-----------+---------+----------+----------+
    --------------
    select    stade_feuillaison,
              octobre,
              novembre
     
        from  `vue_mois`
       where  annee     = 2019
         and  id_espece = 13
     
    union
     
    select    'total'  as stade_feuillaison,
              sum(octobre)  as octobre,
              sum(novembre) as novembre
     
        from  `vue_mois`
       where  annee = 2019
         and  id_espece = 13
     
    order by  stade_feuillaison asc
    --------------
     
    +-------------------+---------+----------+
    | stade_feuillaison | octobre | novembre |
    +-------------------+---------+----------+
    | Stade V0          |       0 |        1 |
    | Stade V1          |       1 |        0 |
    | Stade V2          |       3 |        0 |
    | Stade V3          |       3 |        0 |
    | total             |       7 |        1 |
    +-------------------+---------+----------+
    --------------
    drop view if exists `vue_annee`
    --------------
     
    --------------
    create view `vue_annee` as
    select      t1.stade_feuillaison,
                sum(case when year(t2.date_suivi_espece_cible) = 2018 then 1 else 0 end) as A2018,
                sum(case when year(t2.date_suivi_espece_cible) = 2019 then 1 else 0 end) as A2019
     
          from  `feuillaison`        as t1
     
    inner join  `suivi_espece_cible` as t2
            on  t2.id_feuillaison = t1.id_feuillaison
     
    inner join  `espececible_suivi`  as t3
            on  t3.id_espececible_suivi = t2.id_espececible_suivi
     
         where  t3.id_espece = 13
     
      group by  t1.stade_feuillaison
    --------------
     
    --------------
    select * from `vue_annee`
    --------------
     
    +-------------------+-------+-------+
    | stade_feuillaison | A2018 | A2019 |
    +-------------------+-------+-------+
    | Stade V0          |     0 |     1 |
    | Stade V1          |     0 |     1 |
    | Stade V2          |     0 |     3 |
    | Stade V3          |     0 |     3 |
    +-------------------+-------+-------+
    --------------
    select    stade_feuillaison,
              A2018,
              A2019
     
        from  `vue_annee`
     
    union
     
    select    'total'  as stade_feuillaison,
              sum(A2018)  as A2018,
              sum(A2019) as A2019
     
        from  `vue_annee`
     
    order by  stade_feuillaison asc
    --------------
     
    +-------------------+-------+-------+
    | stade_feuillaison | A2018 | A2019 |
    +-------------------+-------+-------+
    | Stade V0          |     0 |     1 |
    | Stade V1          |     0 |     1 |
    | Stade V2          |     0 |     3 |
    | Stade V3          |     0 |     3 |
    | total             |     0 |     8 |
    +-------------------+-------+-------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  8. #8
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut RollanduBois.

    Vous avez un problème de modélisation.
    Il faut externaliser tous les libelles qui sont répétitives. Cela va vous faire gagner un peu de volumétrie.
    N'utilisez pas le float() qui est pour les usages scientifiques, mais plutôt decimal().
    Vous faites un gros usage des varchar(). Est-ce justifié ?
    Au lieu de "integer" pour vos clef primaire, utilisez plutôt "integer unsigned".
    Vous n'avez pas utilisé les "foreign key" dans vos tables. Pourquoi ?

    J'ai créé à votre demande vos deux requêtes par mois et par année.
    Vous avez une base pour faire évoluer vos besoins.
    J'ai utilisé des view parce que j'avais besoin de traiter deux fois la même requête.
    Si ce besoin est uniquement destiné à un affichage, le mieux est de faire la totalisation au niveau php.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    La base est effectivement extrêmement mal modélisée.
    Non seulement vous perdez beaucoup de place disque comme indiqué par Artemus24 plus haut, mais aussi et surtout il y a de très gros risques d'incohérences liés à la redondance d'information.
    Par exemple, rien n'interdit d'avoir plusieurs espèces d'une même famille, pour l'une, vous aurez renseigné FAGACEAE (en latin), pour une autre FAGACEES (en français) pour une troisième FAGACEAS (faute de frappe) etc. Evidemment, quand vous voudrez faire des recherches sur ce qui concerne une même famille, ce sera impossible à cause de ce genre de données.
    De plus, le typage des données est très mauvais
    Sachant qu'une base modélisée est la source de tous les maux - défaut d'intégrité, requêtes complexes, accès concurrents difficiles et performances désastreuses - je vous invite à revoir cette modélisation si vous en avez la possibilité.
    Il y a un forum consacré à la modélisation ICI

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous, je tiens à remercier spécialement Artemus24 de son aide si précieuse et la vitesse à laquelle il m'a répandu car ton code marche à la perfection et il répand parfaitement à mes attentes. Chapeau Monsieur, vous m'avez vraiment ôté une épine des pieds. La logique devrait me poussé à taguer cette discussion comme étant Résolue, mais une toute dernière fois, pouvez vous m'aider sur mon projet car là j'ai pris un gros retard et je risque gros. Le but ultime du tableau dynamique croisé est de créer un graphe pour permettre aux décideurs de voir le courbe des évolutions des espèces cibles, j'ai pioché un peu partout et j'ai trouvé un outil chart.js qui permet de modéliser cela, seulement j'ai beau visionné des dizaines de tutoriel j'arrive pas à m'y retrouver pour que ça soit dynamique, c'est à dire que les données proviennent directement de MYSQL, donc je me demandais si vous connaissez une façon ou un autre moyen pour réaliser un graphe dynamiquement qui soit facile à manier car mon deadline est pour la semaine prochaine!
    Merci encore à vous pour votre aide si précieuse

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Transférez les résultats dans EXCEL ou un tableur équivalent, un graphe se fera en quelques clics

  12. #12
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2014
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Août 2014
    Messages : 257
    Points : 395
    Points
    395
    Par défaut
    Excel sera en effet la solution la plus intuitive.
    Si dans le futur vous avez des besoins similaire de graph et que vous avez un peu de temps, peut-être que vous pourriez vous pencher sur la solution POWER BI desktop

    Bisous bisous

  13. #13
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut RolanduBois.

    Désolé mais je n'utilise pas chart.js.
    Le plus simple est en effet d'utiliser Excel pour vos affichage.

    Je vous conseille, si vous avez le temps, de revoir la modélisation de votre base de données.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour Artemus 24!!!J'ai encore besoin de ton aide s'il te plait concernant deux choses.

    premièrement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    create view `vue_mois` as
        select  t1.stade_feuillaison,
                t3.id_espece,
                t3.id_sitecoketes,
                year(t2.date_suivi_espece_cible)                                        as annee,
                sum(case when month(t2.date_suivi_espece_cible) = 01 then 1 else 0 end) as janvier,
                sum(case when month(t2.date_suivi_espece_cible) = 02 then 1 else 0 end) as fevrier,
                sum(case when month(t2.date_suivi_espece_cible) = 03 then 1 else 0 end) as mars,
                sum(case when month(t2.date_suivi_espece_cible) = 04 then 1 else 0 end) as avril,
                sum(case when month(t2.date_suivi_espece_cible) = 05 then 1 else 0 end) as mai,
                sum(case when month(t2.date_suivi_espece_cible) = 06 then 1 else 0 end) as juin,
                sum(case when month(t2.date_suivi_espece_cible) = 07 then 1 else 0 end) as juillet,
                sum(case when month(t2.date_suivi_espece_cible) = 08 then 1 else 0 end) as aout,
                sum(case when month(t2.date_suivi_espece_cible) = 09 then 1 else 0 end) as septembre,
                sum(case when month(t2.date_suivi_espece_cible) = 10 then 1 else 0 end) as octobre,
                sum(case when month(t2.date_suivi_espece_cible) = 11 then 1 else 0 end) as novembre,
                sum(case when month(t2.date_suivi_espece_cible) = 12 then 1 else 0 end) as decembre
     
          from  `feuillaison`        as t1
     
    inner join  `suivi_espece_cible` as t2
            on  t2.id_feuillaison = t1.id_feuillaison
     
    inner join  `espececible_suivi`  as t3
            on  t3.id_espececible_suivi = t2.id_espececible_suivi
     
      group by  t1.stade_feuillaison, t3.id_espece,t3.id_sitecoketes, annee
    --------------
     
    --------------
    select * from `vue_mois`
    --------------
     
    +-------------------+-----------+-------+---------+---------+------+-------+------+------+---------+------+-----------+---------+----------+----------+
    | stade_feuillaison | id_espece | annee | janvier | fevrier | mars | avril | mai  | juin | juillet | aout | septembre | octobre | novembre | decembre |
    +-------------------+-----------+-------+---------+---------+------+-------+------+------+---------+------+-----------+---------+----------+----------+
    | Stade V2          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       3 |        0 |        0 |
    | Stade V3          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       3 |        0 |        0 |
    | Stade V1          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       1 |        0 |        0 |
    | Stade V0          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       0 |        1 |        0 |
    +-------------------+-----------+-------+---------+---------+------+-------+------+------+---------+------+-----------+---------+----------+----------+
    --------------
    select    stade_feuillaison,
              octobre,
              novembre
     
        from  `vue_mois`
       where  annee     = 2019
         and  id_espece = 13
     
    union
     
    select    'total'  as stade_feuillaison,
              sum(octobre)  as octobre,
              sum(novembre) as novembre
     
        from  `vue_mois`
       where  annee = 2019
         and  id_espece = 13
     
    order by  stade_feuillaison asc
    --------------
     
    +-------------------+---------+----------+
    | stade_feuillaison | octobre | novembre |
    +-------------------+---------+----------+
    | Stade V0          |       0 |        1 |
    | Stade V1          |       1 |        0 |
    | Stade V2          |       3 |        0 |
    | Stade V3          |       3 |        0 |
    | total             |       7 |        1 |
    +-------------------+---------+----------+
    --------------
    Comment je fais pour faire regroupé ce code non plus par mois mais par trimestre?


    deuxièmement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    --------------
    drop view if exists `vue_annee`
    --------------
     
    --------------
    create view `vue_annee` as
    select      t1.stade_feuillaison,
                sum(case when year(t2.date_suivi_espece_cible) = 2018 then 1 else 0 end) as A2018,
                sum(case when year(t2.date_suivi_espece_cible) = 2019 then 1 else 0 end) as A2019
     
          from  `feuillaison`        as t1
     
    inner join  `suivi_espece_cible` as t2
            on  t2.id_feuillaison = t1.id_feuillaison
     
    inner join  `espececible_suivi`  as t3
            on  t3.id_espececible_suivi = t2.id_espececible_suivi
     
         where  t3.id_espece = 13
     
      group by  t1.stade_feuillaison
    --------------
     
    --------------
    select * from `vue_annee`
    --------------
     
    +-------------------+-------+-------+
    | stade_feuillaison | A2018 | A2019 |
    +-------------------+-------+-------+
    | Stade V0          |     0 |     1 |
    | Stade V1          |     0 |     1 |
    | Stade V2          |     0 |     3 |
    | Stade V3          |     0 |     3 |
    +-------------------+-------+-------+
    --------------
    select    stade_feuillaison,
              A2018,
              A2019
     
        from  `vue_annee`
     
    union
     
    select    'total'  as stade_feuillaison,
              sum(A2018)  as A2018,
              sum(A2019) as A2019
     
        from  `vue_annee`
     
    order by  stade_feuillaison asc
    --------------
     
    +-------------------+-------+-------+
    | stade_feuillaison | A2018 | A2019 |
    +-------------------+-------+-------+
    | Stade V0          |     0 |     1 |
    | Stade V1          |     0 |     1 |
    | Stade V2          |     0 |     3 |
    | Stade V3          |     0 |     3 |
    | total             |     0 |     8 |
    +-------------------+-------+-------+
    --------------
    On a fait ceci, cela fonctionne parfaitement, mais vois tu mon souci c'est que à chaque fois qu'il y ait une nouvelle date je doit entré dans la table `vue_annee` pour l'ajouter.
    Question y aurait il un moyen pour le faire de façon dynamique, c'est à dire qu'à chaque fois qu'une nouvelle année a été insérer cela s'insère automatiquement dans `vue_annee`!!!
    PS: pour `vue_mois` cela fonctionne parfaitement, à chaque fois qu'un suivi espèce cible se fasse, cela s'ajoute automatiquement dans `vue_mois`!!!
    Peux tu m'aider s'il te plait!!Merci

  15. #15
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Rollandubois.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    --------------
    drop view if exists `vue_general`
    --------------
     
    --------------
    create view `vue_general` as
        select  t1.stade_feuillaison,
                t3.id_espece,
                 year(t2.date_suivi_espece_cible)  as annee,
              quarter(t2.date_suivi_espece_cible)  as trimestre,
                month(t2.date_suivi_espece_cible)  as mois
     
          from  `feuillaison`        as t1
     
    inner join  `suivi_espece_cible` as t2
            on  t2.id_feuillaison = t1.id_feuillaison
     
    inner join  `espececible_suivi`  as t3
            on  t3.id_espececible_suivi = t2.id_espececible_suivi
    --------------
     
    --------------
    select * from `vue_general`
    --------------
     
    +-------------------+-----------+-------+-----------+------+
    | stade_feuillaison | id_espece | annee | trimestre | mois |
    +-------------------+-----------+-------+-----------+------+
    | Stade V0          |        13 |  2019 |         4 |   11 |
    | Stade V1          |        13 |  2019 |         4 |   10 |
    | Stade V2          |        13 |  2019 |         4 |   10 |
    | Stade V2          |        13 |  2019 |         4 |   10 |
    | Stade V2          |        13 |  2019 |         4 |   10 |
    | Stade V3          |        13 |  2019 |         4 |   10 |
    | Stade V3          |        13 |  2019 |         4 |   10 |
    | Stade V3          |        13 |  2019 |         4 |   10 |
    +-------------------+-----------+-------+-----------+------+
    --------------
    drop view if exists `vue_mois`
    --------------
     
    --------------
    create view `vue_mois` as
        select  stade_feuillaison,
                id_espece,
                annee,
                sum(case when mois = 01 then 1 else 0 end) as janvier,
                sum(case when mois = 02 then 1 else 0 end) as fevrier,
                sum(case when mois = 03 then 1 else 0 end) as mars,
                sum(case when mois = 04 then 1 else 0 end) as avril,
                sum(case when mois = 05 then 1 else 0 end) as mai,
                sum(case when mois = 06 then 1 else 0 end) as juin,
                sum(case when mois = 07 then 1 else 0 end) as juillet,
                sum(case when mois = 08 then 1 else 0 end) as aout,
                sum(case when mois = 09 then 1 else 0 end) as septembre,
                sum(case when mois = 10 then 1 else 0 end) as octobre,
                sum(case when mois = 11 then 1 else 0 end) as novembre,
                sum(case when mois = 12 then 1 else 0 end) as decembre
     
          from  `vue_general`
     
      group by  stade_feuillaison, id_espece, annee
    --------------
     
    --------------
    select * from `vue_mois`
    --------------
     
    +-------------------+-----------+-------+---------+---------+------+-------+------+------+---------+------+-----------+---------+----------+----------+
    | stade_feuillaison | id_espece | annee | janvier | fevrier | mars | avril | mai  | juin | juillet | aout | septembre | octobre | novembre | decembre |
    +-------------------+-----------+-------+---------+---------+------+-------+------+------+---------+------+-----------+---------+----------+----------+
    | Stade V0          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       0 |        1 |        0 |
    | Stade V1          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       1 |        0 |        0 |
    | Stade V2          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       3 |        0 |        0 |
    | Stade V3          |        13 |  2019 |       0 |       0 |    0 |     0 |    0 |    0 |       0 |    0 |         0 |       3 |        0 |        0 |
    +-------------------+-----------+-------+---------+---------+------+-------+------+------+---------+------+-----------+---------+----------+----------+
    --------------
    select    stade_feuillaison,
              octobre,
              novembre
     
        from  `vue_mois`
       where  annee     = 2019
         and  id_espece = 13
     
    union
     
    select    'total'  as stade_feuillaison,
              sum(octobre)  as octobre,
              sum(novembre) as novembre
     
        from  `vue_mois`
       where  annee     = 2019
         and  id_espece = 13
     
    order by  stade_feuillaison asc
    --------------
     
    +-------------------+---------+----------+
    | stade_feuillaison | octobre | novembre |
    +-------------------+---------+----------+
    | Stade V0          |       0 |        1 |
    | Stade V1          |       1 |        0 |
    | Stade V2          |       3 |        0 |
    | Stade V3          |       3 |        0 |
    | total             |       7 |        1 |
    +-------------------+---------+----------+
    --------------
    drop view if exists `vue_trimestre`
    --------------
     
    --------------
    create view `vue_trimestre` as
        select  stade_feuillaison,
                id_espece,
                annee,
                sum(case when trimestre = 01 then 1 else 0 end) as trim_1,
                sum(case when trimestre = 02 then 1 else 0 end) as trim_2,
                sum(case when trimestre = 03 then 1 else 0 end) as trim_3,
                sum(case when trimestre = 04 then 1 else 0 end) as trim_4
     
          from  `vue_general`
     
      group by  stade_feuillaison, id_espece, annee
    --------------
     
    --------------
    select * from `vue_trimestre`
    --------------
     
    +-------------------+-----------+-------+--------+--------+--------+--------+
    | stade_feuillaison | id_espece | annee | trim_1 | trim_2 | trim_3 | trim_4 |
    +-------------------+-----------+-------+--------+--------+--------+--------+
    | Stade V2          |        13 |  2019 |      0 |      0 |      0 |      3 |
    | Stade V3          |        13 |  2019 |      0 |      0 |      0 |      3 |
    | Stade V1          |        13 |  2019 |      0 |      0 |      0 |      1 |
    | Stade V0          |        13 |  2019 |      0 |      0 |      0 |      1 |
    +-------------------+-----------+-------+--------+--------+--------+--------+
    --------------
    select    stade_feuillaison,
              trim_4
     
        from  `vue_trimestre`
       where  annee     = 2019
         and  id_espece = 13
     
    union
     
    select    'total'  as stade_feuillaison,
              sum(trim_4) as trim_4
     
        from  `vue_trimestre`
       where  annee     = 2019
         and  id_espece = 13
     
    order by  stade_feuillaison asc
    --------------
     
    +-------------------+--------+
    | stade_feuillaison | trim_4 |
    +-------------------+--------+
    | Stade V0          |      1 |
    | Stade V1          |      1 |
    | Stade V2          |      3 |
    | Stade V3          |      3 |
    | total             |      8 |
    +-------------------+--------+
    --------------
    drop view if exists `vue_annee`
    --------------
     
    --------------
    create view `vue_annee` as
    select      stade_feuillaison,
                id_espece,
                annee,
                count(*) as nbre
     
          from  `vue_general`
     
      group by  stade_feuillaison, id_espece, annee
    --------------
     
    --------------
    select * from `vue_annee`
    --------------
     
    +-------------------+-----------+-------+------+
    | stade_feuillaison | id_espece | annee | nbre |
    +-------------------+-----------+-------+------+
    | Stade V2          |        13 |  2019 |    3 |
    | Stade V3          |        13 |  2019 |    3 |
    | Stade V1          |        13 |  2019 |    1 |
    | Stade V0          |        13 |  2019 |    1 |
    +-------------------+-----------+-------+------+
    --------------
    select    stade_feuillaison,
              nbre
     
        from  `vue_annee`
     
       where  annee     = 2019
         and  id_espece = 13
     
    union
     
    select    'total'   as stade_feuillaison,
              sum(nbre) as nbre
     
        from  `vue_annee`
     
       where  annee     = 2019
         and  id_espece = 13
     
    order by  stade_feuillaison
    --------------
     
    +-------------------+------+
    | stade_feuillaison | nbre |
    +-------------------+------+
    | Stade V0          |    1 |
    | Stade V1          |    1 |
    | Stade V2          |    3 |
    | Stade V3          |    3 |
    | total             |    8 |
    +-------------------+------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  16. #16
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Bonjour Artemus 24, merci de ton aide, mais hélas à chaque fois que j'espère entrevoir la sortie, je butte encore sur d'autres souci!!! S'il te plait excuse moi de mon acharnement envers toi pour te solliciter si souvent mais je bloque encore une fois fois sur un bout de code . Vois tu j'arrive pas à matérialiser coté html le tableau dynamique croisé, je m'explique: je souhaite via une barre de recherche afficher un tableau selon un critère basé sur le site coketes,l'espece,le ou les mois qu'il désire sélectionné et l'année de la sélection. Coté requête je ne rencontre pas vraiment de problème, du moins je le pense!!!Mon souci c'est au moment d'afficher les résultats dans un tableau, je ne sais pas comment faire!!!J'ai l'intime conviction que je dois utiliser un boucle ou quelques chose du genre mais je n'y arrive pas, pour être sincère je ne sais pas comment faire!!!Voici mon code, pitié peux tu y jeté un œil et voir si tu peux en tiré quelques choses!!!Merci beaucoup
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
     
    <?php
    require_once 'inc/db.php';
    require_once 'inc/function.php';
    $Fonction->logged_only();
    if($Fonction->user('Level')<3)
    {
            $sitecoketes=$Fonction->user('sitecoketes');
    }
     
    $sql=" SELECT *
              FROM site_coketes
              WHERE site_coketes.etat=1 
                            ";
                            
    if($Fonction->user('Level')<3)
    {
            $sql.=" AND site_coketes.id_sitecoketes=$sitecoketes ";
    }
            $values=$db->prepare($sql);
            $values->execute();
     
    $sql1=" select  DISTINCT  annee
         from  vue_mois_feuillaison";
             
    if($Fonction->user('Level')<3)
    {
            $sql1.=" WHERE vue_mois_feuillaison.id_sitecoketes=$sitecoketes ";
    }
            $sql1.=" ORDER BY annee DESC ";
            $annees=$db->prepare($sql1);
            $annees->execute();
            
    $sql2=" select  DISTINCT  t5.id_espece,t5.nomBinomial
         from  `vue_mois_feuillaison` as t4
         inner join  `espece`  as t5
         on  t4.id_espece = t5.id_espece ";
             
    if($Fonction->user('Level')<3)
    {
            $sql2.=" WHERE t4.id_sitecoketes=$sitecoketes ";
    }
             $especes=$db->prepare($sql2);
             $especes->execute();
            
     
    if(isset($_POST['valider']))
    {
            $erreurs=array();
            if(empty($_POST['sitecoketes']))
            {
                    $erreurs['sitecoketes']="Veuillez renseigner le site coketes";
            }
            if(empty($_POST['espece']))
            {
                    $erreurs['espece']="Veuillez renseigner l'espèce";
            }
            if(empty($_POST['date']))
            {
                    $erreurs['date']="Veuillez renseigner l'année";
            }
            if(empty($_POST['mois']))
            {
                    $erreurs['mois']="Veuillez renseigner le mois";
            }
            
            if(empty($erreurs))
            {
                    $site_coketes=$Fonction->secure($_POST['sitecoketes']);
                    $espece=$Fonction->secure($_POST['espece']);
                    $date=$Fonction->secure($_POST['date']);
                    $mois=implode(',',$_POST['mois']);
                    $newmois=$Fonction->secure($mois);
                    
                    $sql="select stade_feuillaison,
                                    $newmois 
                                    from  `vue_mois_feuillaison`
                                    where  annee     = $date
                                    and  id_espece = $espece";
                    $reqs=$db->prepare($sql);
                    $reqs->execute();
                    print_r($reqs);
            }
    }else
    {
            $reqs="";
    }
    ?>
     
    <?php if(!empty($erreurs)): ?>
        <div class="alert alert-danger">
          <p>Vous n'avez pas rempli le formulaire correctement</p>
          <ul>
            <?php foreach($erreurs as $erreur): ?>
              <li><?=$erreur;?></li>
            <?php endforeach; ?>
          </ul>
        </div>
    <?php endif;?>
     
        <div class="scrollable">
            <div class="panel-group">
                <div class="panel panel-success">
                    <div class="panel-heading">
                        <center><h4><b>Analyse Feuillaison Mensuelle</b></h4></center>
                    </div>
                    <div class="panel-body">
                        <div class="scrollmenu">
                            <form class="form-inline" action=" " method="post"  id="contact_form">
                                <div class="form-group">
                                    <label class="sr-only">Site Coketes:</label>
    								<div class="input-group-prepend">
    									<span class="input-group-text">Site Coketes:</span>
    								</div>
                                    <select  name="sitecoketes" class="form-control">
                                        <option value=""></option>
                                        <?php foreach($values as $value):?>
                                        <option value="<?=$value->id_sitecoketes?>"><?=$value->nom_sitecoketes?></option>
                                        <?php endforeach;?>
                                   </select>
                                </div>
     
    							<div class="form-group">
                                    <label class="sr-only">Espèce:</label>
    								<div class="input-group-prepend">
    									<span class="input-group-text">Espèce:</span>
    								</div>
                                    <select  name="espece" class="form-control">
                                        <option value=""></option>
                                        <?php foreach($especes as $espece):?>
                                        <option value="<?=$espece->id_espece?>"><?=$espece->nomBinomial?></option>
                                        <?php endforeach;?>
                                   </select>
                                </div>
     
     
    							<div class="form-group">
                                    <label class="sr-only">Année:</label>
    								<div class="input-group-prepend">
    									<span class="input-group-text">Année:</span>
    								</div>
                                    <select  name="date" class="form-control">
                                        <option value=""></option>
                                        <?php foreach($annees as $annee):?>
                                        <option value="<?=$annee->annee?>"><?=$annee->annee?></option>
                                        <?php endforeach;?>
                                   </select>
                                </div>
                                <div class="form-group">
    								<div class="input-group-prepend">
    									<span class="input-group-text">Mois:</span>
    								</div>
                                    <a data-toggle="collapse" class="form-control" href="#collapse1"><span class="caret"></span></a>
                                    <div id="collapse1" class="panel-collapse collapse">
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="janvier">Janvier</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="fevrier">Fevrier</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="mars">Mars</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="avril">Avril</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="mai">Mai</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="juin">Juin</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="juillet">Juillet</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="aout">Aout</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="septembre">Septembre</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="octobre">Octobre</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="novembre">Novembre</label>
                                        </div>
                                        <div class="checkbox-block">
                                            <label><input type="checkbox" name="mois[]" value="decembre">Decembre</label>
                                        </div>
                                    </div>                                
                                </div>
                                <div class="form-group">
    								<div class="input-group-prepend">
    									<span class="input-group-text">.</span>
    								</div>
                                    <input type="submit" class="btn btn btn-success form-control" name="valider" id="submit">
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
                <div class="panel panel-default">
                    <div class="panel-body">
    				<?php if(!empty($reqs)):?>
     
    						<table class="table table-condensed"> 
     
    								<thead> 
    									<tr> 
    										<td>stade feuillaison</td>
     
    									    <td><?=$newmois?></td>
    									</tr> 
    								</thead> 
    								<tbody>
    									<?php foreach($reqs as $newmois => $req):?>
    									<tr>
    										<td><?=$req->stade_feuillaison?></td>
    										<td><?=$req->octobre?></td>
    									</tr>
    									<?php endforeach;?>
    							   </tbody> 
    					   </table>
     
    				<?php endif;?>
                    </div>
                </div>
            </div> 
        </div>
     
    <style>
    div.scrollmenu {
      background-color: inherit;
      overflow: auto;
      white-space: nowrap;
      padding: 14px;
    }
     
    div.scrollmenu a:hover {
      background-color: #777;
    }
    </style>

  17. #17
    Membre expérimenté
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Septembre 2016
    Messages
    731
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2016
    Messages : 731
    Points : 1 416
    Points
    1 416
    Par défaut
    Bonjour

    Citation Envoyé par Rollanduboit Voir le message
    Bonjour Artemus 24, merci de ton aide, mais hélas à chaque fois que j'espère entrevoir la sortie, je butte encore sur d'autres souci!!! S'il te plait excuse moi de mon acharnement envers toi pour te solliciter si souvent mais je bloque encore une fois fois sur un bout de code
    Ce qu'on dit de par chez nous : "toute peine mérite salaire"

    Je ne voudrais certainement pas répondre à la place de @Artemus 24, mais, lui avez-vous proposé une mission rémunérée ?
    Quand on apprécie la qualité d'un homme, c'est pas déconnant.
    Le savoir est une nourriture qui exige des efforts.

  18. #18
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 381
    Points : 19 065
    Points
    19 065
    Par défaut
    Salut Michel.Priori.

    Non merci, je ne cherche pas à me faire rémunérer.
    Je rappelle que nous sommes dans un forum consacré exclusivement à MySql et non à Php.
    Si je ne réponds pas c'est que je pense avoir suffisamment traité la question.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  19. #19
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2019
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci de ton aide Artemus 24, tu as raison sur le fait que je me suis trompé de post, je crois que je me suis laissé emporté par mon élan, désolé !!! Voilà, je tiens à te remercier car ton aide a fait avancer mon projet à grand pas, Merci !!! A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Faire un tableau dynamique croisé avec du texte
    Par PaulG2B dans le forum Excel
    Réponses: 5
    Dernier message: 17/04/2014, 16h32
  2. Réponses: 4
    Dernier message: 03/03/2008, 15h44
  3. tableau dynamique croisé
    Par aurelien.tournier dans le forum SQL
    Réponses: 3
    Dernier message: 07/06/2007, 16h19
  4. Réponses: 2
    Dernier message: 25/04/2007, 13h03
  5. [VBA-E]Afficher tout dans un tableau dynamique croisé
    Par alex_95 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/03/2006, 13h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo