dthuler
Messages postés121Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention29 avril 2009
-
20 avril 2009 à 11:32
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 2011
-
20 avril 2009 à 14:06
Bonjour,
J'ai un gros problème que je n'arrive pas à isoler dans une requête MySQL;
La requête suivante me donne l'erreur "Every derived table must have its own alias" sur MySQL 4.2 et je vois vraiment pas d'où ça peut venir... Attention les yeux:
SELECT
Month,
departments.ShortName AS Department,
GLOBEID,
FirstName,
LastName,
SUM(Actual) AS Actual,
SUM(Planned) AS Planned
FROM users
LEFT JOIN
(
(
SELECT
SUM(Hours) AS Actual,
NULL AS Planned,
users.ID AS PplID,
EffectiveMonth AS Month
FROM pshours
LEFT JOIN users ON pshours.GlobeID = users.GLOBEID WHERE Network 'RDOR100119' AND EffectiveYear 2009
GROUP BY PplID, Month
)
UNION
(
SELECT
NULL AS Actual,
SUM(Hours) AS Planned,
PplID,
Month AS Month
FROM newassignement WHERE ProjectID 68 AND Year 2009
GROUP BY PplID, Month
)
) AS ActualxPlan_Table ON users.ID = PplID
LEFT JOIN departments ON users.DptID = departments.ID
WHERE (Actual IS NOT NULL OR Planned IS NOT NULL)
GROUP BY Month, GLOBEID ORDER BY DptID, LastName, FirstName
Quelqu'un peut m'aider ?
Merci d'avance à l'âme charitable qui m'aidera...
David
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 20 avril 2009 à 12:07
bonjour
en voyant le message d'erreur, je me dis qu'il faut surement que tu rajoute un alias pour chacune de tes sous requetes de ton premier "LEFT JOIN" soit quelque chose comme ca :
SELECT
Month,
departments.ShortName AS Department,
GLOBEID,
FirstName,
LastName,
SUM(Actual) AS Actual,
SUM(Planned) AS Planned
FROM users
LEFT JOIN
(
(
SELECT
SUM(Hours) AS Actual,
NULL AS Planned,
users.ID AS PplID,
EffectiveMonth AS Month
FROM pshours
LEFT JOIN users ON pshours.GlobeID = users.GLOBEID WHERE Network 'RDOR100119' AND EffectiveYear 2009
GROUP BY PplID, Month
) AS Table1
UNION
(
SELECT
NULL AS Actual,
SUM(Hours) AS Planned,
PplID,
Month AS Month
FROM newassignement WHERE ProjectID 68 AND Year 2009
GROUP BY PplID, Month
) AS Table2
) AS ActualxPlan_Table ON users.ID = PplID
LEFT JOIN departments ON users.DptID = departments.ID
WHERE (Actual IS NOT NULL OR Planned IS NOT NULL)
GROUP BY Month, GLOBEID ORDER BY DptID, LastName, FirstName
dthuler
Messages postés121Date d'inscriptiondimanche 9 mars 2003StatutMembreDernière intervention29 avril 2009 20 avril 2009 à 13:45
J'ai déjà essayé et en faisant ça, j'obtient carrément une erreur de syntaxe avant le "UNION"...
Une idée ? J'ai sérieusement essayé avant mais je ne trouve pas encore le "bug"...
David
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 20 avril 2009 à 14:06
hmmm
je ne connais pas tres bien mySQL, mais avez vous essayé de mettre a alias a TOUTES les tables que vous appelez (avec bien sur un alias different pour une table que vous appelez plusieurs fois, comme la table users, appelée dans la requete principale, mais aussi dans les sous requetes... le probléme vient peut etre de la...)