Bonjour, je débute avec webdev, j'ai donc voulu porté une petite appli de stats qui tourne en php depuis 8 ans sans soucis. Je précise que j'ai l'accès natif oracle. Il y des aberrations dans la base oracle mais je n'en suis pas propriétaire, je ne fais que des requêtes dessus. Donc, j'ai une date en format julien qui n'est pas déclaré comme une date mais comme un numérique. Et de là vient tous mes malheurs apparemment, car si j'enlève toutes les commandes qui y font référence, ça fonctionne. Ma requête seule fonctionne très bien, même si j'ai du batailler pour remplacer la commande extract qui est si pratique mais que webdev ne connais apparemment pas, je génère un état a partir de cette requête, mais lorsque je le lance, erreur accès natif oracle : 1004, on dirait que webdev interprète la requete alors qu'il ne devrait puisque c'est un accès natif. Ma requête fonctionne parfaitement en SQLplus. J'ai pensé que c'était du à la complexité de ma requete (requete en table et jointure externe), mais même une partie simple ne fonctionne pas non plus.
Voici mon sql si quelqun a une idée :
SELECT c1.an_paie, c1.mois_paie, c1.nb_titu, c2.nb_contractuel, c3.nb_jeune, c4.nb_chomage, c5.mt_brut, c6.mt_chomage, c7.mt_charge, c8.mt_masse FROM ( SELECT to_char(TO_DATE(DAT_PAIE,'J'),'YYYY') AS an_paie, to_char(TO_DATE(DAT_PAIE,'J'),'mm') AS mois_paie, COUNT(DISTINCT BULPAI_H.IDF_AGENT) AS nb_titu FROM BULPAI_H, AGTGRD, EMPLOI, AGTNAT WHERE BULPAI_H.COD_COLL = AGTGRD.COD_COLL AND BULPAI_H.IDF_AGENT = AGTGRD.IDF_AGENT AND BULPAI_H.COD_COLL = AGTNAT.COD_COLL AND BULPAI_H.IDF_AGENT = AGTNAT.IDF_AGENT AND BULPAI_H.COD_COLL = EMPLOI.COD_COLL AND BULPAI_H.IDF_AGENT = EMPLOI.IDF_AGENT AND AGTNAT.COD_GESTION IN ('0', '1') AND BULPAI_H.COD_RUB = '901N' AND BULPAI_H.MNT_RUB_N > 0 AND AGTGRD.COD_POSAGT NOT IN ('CH') AND EMPLOI.NUM_EMPLOI = 1 AND EMPLOI.COD_EMPLOY = '01' AND to_char(TO_DATE(DAT_PAIE,'J'),'YYYY')=2008 AND LAST_DAY(TO_DATE(DAT_PAIE,'J'))>= AGTGRD.DAT_DEBUT AND TO_DATE(DAT_PAIE,'J')<=AGTGRD.DAT_FIN AND LAST_DAY(TO_DATE(DAT_PAIE,'J'))>= EMPLOI.DAT_DEBUT AND TO_DATE(DAT_PAIE,'J')<=EMPLOI.DAT_FIN GROUP BY to_char(TO_DATE(DAT_PAIE,'J'),'YYYY'),to_char(TO_DATE(DAT_PAIE,'J'),'mm') ) c1 , ( SELECT to_char(TO_DATE(DAT_PAIE,'J'),'YYYY') AS an_paie, to_char(TO_DATE(DAT_PAIE,'J'),'mm') AS mois_paie, COUNT(DISTINCT BULPAI_H.IDF_AGENT) AS nb_contractuel FROM BULPAI_H, AGTGRD, EMPLOI, AGTNAT WHERE BULPAI_H.COD_COLL = AGTGRD.COD_COLL AND BULPAI_H.IDF_AGENT = AGTGRD.IDF_AGENT AND BULPAI_H.COD_COLL = AGTNAT.COD_COLL AND BULPAI_H.IDF_AGENT = AGTNAT.IDF_AGENT AND BULPAI_H.COD_COLL = EMPLOI.COD_COLL AND BULPAI_H.IDF_AGENT = EMPLOI.IDF_AGENT AND AGTNAT.COD_GESTION IN ('2') AND BULPAI_H.COD_RUB = '901N' AND BULPAI_H.MNT_RUB_N <> 0 AND AGTGRD.COD_POSAGT NOT IN ('EJ','CH') AND EMPLOI.NUM_EMPLOI = 1 AND EMPLOI.COD_EMPLOY = '01' AND to_char(TO_DATE(DAT_PAIE,'J'),'YYYY')=2008 AND LAST_DAY(TO_DATE(DAT_PAIE,'J'))>= AGTGRD.DAT_DEBUT AND TO_DATE(DAT_PAIE,'J')<=AGTGRD.DAT_FIN AND LAST_DAY(TO_DATE(DAT_PAIE,'J'))>= EMPLOI.DAT_DEBUT AND TO_DATE(DAT_PAIE,'J')<=EMPLOI.DAT_FIN GROUP BY to_char(TO_DATE(DAT_PAIE,'J'),'YYYY'),to_char(TO_DATE(DAT_PAIE,'J'),'mm') ) c2 , ( SELECT to_char(TO_DATE(DAT_PAIE,'J'),'YYYY') AS an_paie, to_char(TO_DATE(DAT_PAIE,'J'),'mm') AS mois_paie, COUNT(DISTINCT BULPAI_H.IDF_AGENT) AS nb_jeune FROM BULPAI_H, AGTGRD, EMPLOI, AGTNAT WHERE BULPAI_H.COD_COLL = AGTGRD.COD_COLL AND BULPAI_H.IDF_AGENT = AGTGRD.IDF_AGENT AND BULPAI_H.COD_COLL = AGTNAT.COD_COLL AND BULPAI_H.IDF_AGENT = AGTNAT.IDF_AGENT AND BULPAI_H.COD_COLL = EMPLOI.COD_COLL AND BULPAI_H.IDF_AGENT = EMPLOI.IDF_AGENT AND AGTNAT.COD_GESTION IN ('2') AND BULPAI_H.COD_RUB = '901N' AND BULPAI_H.MNT_RUB_N <> 0 AND COD_CATAGT IN ('A','C') AND AGTGRD.COD_POSAGT IN ('EJ') AND EMPLOI.NUM_EMPLOI = 1 AND EMPLOI.COD_EMPLOY = '01' AND to_char(TO_DATE(DAT_PAIE,'J'),'YYYY')=2008 AND LAST_DAY(TO_DATE(DAT_PAIE,'J'))>= AGTGRD.DAT_DEBUT AND TO_DATE(DAT_PAIE,'J')<=AGTGRD.DAT_FIN AND LAST_DAY(TO_DATE(DAT_PAIE,'J'))>= EMPLOI.DAT_DEBUT AND TO_DATE(DAT_PAIE,'J')<=EMPLOI.DAT_FIN GROUP BY to_char(TO_DATE(DAT_PAIE,'J'),'YYYY'),to_char(TO_DATE(DAT_PAIE,'J'),'mm') ) c3 , ( SELECT to_char(TO_DATE(DAT_PAIE,'J'),'YYYY') AS an_paie, to_char(TO_DATE(DAT_PAIE,'J'),'mm') AS mois_paie, COUNT(DISTINCT BULPAI_H.IDF_AGENT) AS nb_chomage FROM BULPAI_H, AGTGRD, EMPLOI, AGTNAT WHERE BULPAI_H.COD_COLL = AGTGRD.COD_COLL AND BULPAI_H.IDF_AGENT = AGTGRD.IDF_AGENT AND BULPAI_H.COD_COLL = AGTNAT.COD_COLL AND BULPAI_H.IDF_AGENT = AGTNAT.IDF_AGENT AND BULPAI_H.COD_COLL = EMPLOI.COD_COLL AND BULPAI_H.IDF_AGENT = EMPLOI.IDF_AGENT AND BULPAI_H.COD_RUB = '901N' AND BULPAI_H.MNT_RUB_N <> 0 AND AGTGRD.COD_POSAGT IN ('CH') AND EMPLOI.NUM_EMPLOI = 1 AND EMPLOI.COD_EMPLOY = '01' AND to_char(TO_DATE(DAT_PAIE,'J'),'YYYY')=2008 AND LAST_DAY(TO_DATE(DAT_PAIE,'J'))>= AGTGRD.DAT_DEBUT AND TO_DATE(DAT_PAIE,'J')<=AGTGRD.DAT_FIN AND LAST_DAY(TO_DATE(DAT_PAIE,'J'))>= EMPLOI.DAT_DEBUT AND TO_DATE(DAT_PAIE,'J')<=EMPLOI.DAT_FIN GROUP BY to_char(TO_DATE(DAT_PAIE,'J'),'YYYY'),to_char(TO_DATE(DAT_PAIE,'J'),'mm') ) c4 , ( SELECT to_char(TO_DATE(DAT_PAIE,'J'),'YYYY') AS an_paie, to_char(TO_DATE(DAT_PAIE,'J'),'mm') AS mois_paie, SUM(BULPAI_H.MNT_RUB_N) AS mt_brut FROM BULPAI_H, AGTGRD WHERE BULPAI_H.COD_RUB IN ('900N') AND BULPAI_H.COD_COLL = AGTGRD.COD_COLL AND BULPAI_H.IDF_AGENT = AGTGRD.IDF_AGENT AND to_char(TO_DATE(DAT_PAIE,'J'),'YYYY')=2008 AND AGTGRD.DAT_FIN = TO_DATE('31-12-2099','dd-mm-YYYY') AND BULPAI_H.IDF_AGENT IN (SELECT DISTINCT IDF_AGENT FROM EMPLOI WHERE COD_EMPLOY = '01') GROUP BY to_char(TO_DATE(DAT_PAIE,'J'),'YYYY'),to_char(TO_DATE(DAT_PAIE,'J'),'mm'), BULPAI_H.COD_RUB ) c5 , ( SELECT to_char(TO_DATE(DAT_PAIE,'J'),'YYYY') AS an_paie, to_char(TO_DATE(DAT_PAIE,'J'),'mm') AS mois_paie, SUM(BULPAI_H.MNT_RUB_N) AS mt_chomage FROM BULPAI_H, AGTGRD WHERE BULPAI_H.COD_RUB IN ('900N') AND BULPAI_H.COD_COLL = AGTGRD.COD_COLL AND BULPAI_H.IDF_AGENT = AGTGRD.IDF_AGENT AND to_char(TO_DATE(DAT_PAIE,'J'),'YYYY')=2008 AND AGTGRD.DAT_FIN = TO_DATE('31-12-2099','dd-mm-YYYY') AND AGTGRD.COD_POSAGT = 'CH' AND BULPAI_H.IDF_AGENT IN (SELECT DISTINCT IDF_AGENT FROM EMPLOI WHERE COD_EMPLOY = '01') GROUP BY to_char(TO_DATE(DAT_PAIE,'J'),'YYYY'),to_char(TO_DATE(DAT_PAIE,'J'),'mm'), BULPAI_H.COD_RUB ) c6 , ( SELECT to_char(TO_DATE(DAT_PAIE,'J'),'YYYY') AS an_paie, to_char(TO_DATE(DAT_PAIE,'J'),'mm') AS mois_paie, SUM(BULPAI_H.MNT_RUB_N) AS mt_charge FROM BULPAI_H WHERE BULPAI_H.COD_RUB IN ('908N') AND to_char(TO_DATE(DAT_PAIE,'J'),'YYYY')=2008 AND BULPAI_H.IDF_AGENT IN (SELECT DISTINCT IDF_AGENT FROM EMPLOI WHERE COD_EMPLOY = '01') GROUP BY to_char(TO_DATE(DAT_PAIE,'J'),'YYYY'),to_char(TO_DATE(DAT_PAIE,'J'),'mm'), BULPAI_H.COD_RUB ) c7 , ( SELECT to_char(TO_DATE(DAT_PAIE,'J'),'YYYY') AS an_paie, to_char(TO_DATE(DAT_PAIE,'J'),'mm') AS mois_paie, SUM(BULPAI_H.MNT_RUB_N) AS mt_masse FROM BULPAI_H WHERE BULPAI_H.COD_RUB IN ('908N','900N') AND to_char(TO_DATE(DAT_PAIE,'J'),'YYYY')=2008 AND BULPAI_H.IDF_AGENT IN (SELECT DISTINCT IDF_AGENT FROM EMPLOI WHERE COD_EMPLOY = '01') GROUP BY to_char(TO_DATE(DAT_PAIE,'J'),'YYYY'),to_char(TO_DATE(DAT_PAIE,'J'),'mm') ) c8 WHERE c1.mois_paie=c2.mois_paie(+) AND c1.mois_paie=c3.mois_paie(+) AND c1.mois_paie=c4.mois_paie(+) AND c1.mois_paie=c5.mois_paie(+) AND c1.mois_paie=c6.mois_paie(+) AND c1.mois_paie=c7.mois_paie(+) AND c1.mois_paie=c8.mois_paie(+) ORDER BY c1.an_paie, c1.mois_paie |