$Sql = "SELECT a.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNE, SUM(a.NB_CRENEAU) AS heures
FROM ABSENCE_CONSTATEE a
LEFT JOIN JEUNE j ON a.CODE_JEUNE = j.CODE_JEUNE
WHERE j.CODE_JEUNE < 10
GROUP BY a.CODE_JEUNE";
Warning: ibase_query() [function.ibase-query]: Dynamic SQL Error SQL error code = -104 invalid column reference in D:\www\site\cfa\ymag_absences.php on line 100
Code : Tout sélectionner
SELECT j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNE, SUM(a.NB_CRENEAU) AS heures
FROM JEUNE j
INNER JOIN ABSENCE_CONSTATEE a ON a.CODE_JEUNE = j.CODE_JEUNE
WHERE j.CODE_JEUNE < 10
GROUP BY j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNECode : Tout sélectionner
SELECT j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNE,
CODE_GROUPE, CODE_MOTIF_ABS,
SUM(a.NB_CRENEAU) AS heures
FROM JEUNE j
INNER JOIN ABSENCE_CONSTATEE a ON a.CODE_JEUNE = j.CODE_JEUNE
WHERE j.CODE_JEUNE < 10
GROUP BY j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNEEuh... je ne suis pas certainles béabas du group by:
Un group by effectue un regroupement de lignes selon les champs spécifiés dans le select.
Si dans mysql ce n'est pas obligatoire, les autres SGBD et SQL standard l'exigent et c'est tout à fait logique.
Je viens de faire le test sur un Oracle 10g et je n'ai pas eu besoin de le faire. Tu es sur que c'est necessaire systematiquement ?
Pas sur le serveur ou je bossesous Oracle 10g, si les champs du GROUP By ne sont pas pas tous dans le SELECT, il y a une erreur retournée
Je trouve ça extremement bizarre vu qu'on touche à la nomr SQL/ANSI quand même
Quelle est la requete que tu as essayé ?
$Sql = "SELECT j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNE,
SUM(a.NB_CRENEAU) AS heures
FROM JEUNE j
INNER JOIN ABSENCE_CONSTATEE a ON a.CODE_JEUNE = j.CODE_JEUNE
WHERE j.CODE_JEUNE < 10
GROUP BY j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNE"; et ajouter ", a.CODE_GROUPE, a.CODE_MOTIF_ABS" dans le SELECT pour les lire.
$Sql = "SELECT j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNE,
a.CODE_GROUPE, a.CODE_MOTIF_ABS, SUM(a.NB_CRENEAU) AS heures
FROM JEUNE j
INNER JOIN ABSENCE_CONSTATEE a ON a.CODE_JEUNE = j.CODE_JEUNE
WHERE j.CODE_JEUNE < 10
GROUP BY j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNE, a.CODE_GROUPE, a.CODE_MOTIF_ABS";
ce qui est tout à fait logique, puisque cette requête regroupe le résultat par jeune et par code_groupe et motif avant de calculer la somme de nb_creneau
Code : Tout sélectionner
SELECT tmp.CODE_JEUNE, tmp.NOM_JEUNE, tmp.PRENOM_JEUNE, tmp.heures, abs.CODE_GROUP, abs.CODE_MOTIF_ABS
FROM (
SELECT j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNE, SUM(a.NB_CRENEAU) AS heures
FROM JEUNE j
INNER JOIN ABSENCE_CONSTATEE a ON a.CODE_JEUNE = j.CODE_JEUNE
WHERE j.CODE_JEUNE < 10
GROUP BY j.CODE_JEUNE, j.NOM_JEUNE, j.PRENOM_JEUNE
) AS tmp
INNER JOIN ABSENCE_CONSTATEE abs ON abs.CODE_JEUNE = tmp.CODE_JEUNEMalheureusement, il y a un moment où il faut prendre en compte les réalités du monde qui nous entoure. Il n'est pas toujours possible de programmer avec des œillères et suivre aveuglément les standards. Je suis le premier à réclamer un plus grand respect des standards, mais il faut se rendre à l'évidence : à la fin, on programme toujours pour une SGBD particulier. En tout cas, jusqu'à ce que l'ISO développe son propre logiciel ou que Fabian Pascal frotte une lampe à génie.moi et toi on parle de standard SQL mais les autres parlent de spécificité de SGBD
Simplement parce que oracle retourne tout les champs en majuscule donc depuis n'importe quel visualiseur de BdD, tu as les noms des champs en majuscule.C'est une habitude que je vois essentiellement chez ceux qui travaillent sur Oracle, est-ce que quelqu'un sait pourquoi ?