Requête union sur Interbase
Bonjour,
j'ai exécuté une requête union avec Interbase.
J'utilise des abréviations pour définir le nom de mes tables.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
SELECT 'VRAI' AS CONTENU, ADMFONC.IDFONCTION, ADMFONC.NOMFONCTION, ADMSOUSFONC.IDSOUSFONCTION, ADMSOUSFONC.NOMSOUSFONCTION
FROM ADM_FONCTIONS ADMFONC
LEFT JOIN ADM_SOUSFONCTIONS ADMSOUSFONC ON (ADMFONC.IDFONCTION = ADMSOUSFONC.IDFONCTION)
LEFT JOIN ADM_FORMULAIRESFONCTIONS ADMFORMFONC ON (ADMSOUSFONC.IDSOUSFONCTION = ADMFORMFONC.IDSOUSFONCTION)
LEFT JOIN ADM_FORMULAIRES ADMFORM ON (ADMFORMFONC.IDFORMULAIRE = ADMFORM.IDFORMULAIRE)
WHERE IDFORMULAIRE = 1
UNION
SELECT 'FAUX' AS CONTENU, ADMFONC.IDFONCTION, ADMFONC.NOMFONCTION, ADMSOUSFONC.IDSOUSFONCTION, ADMSOUSFONC.NOMSOUSFONCTION
FROM ADM_FONCTIONS ADMFONC
LEFT JOIN ADM_SOUSFONCTIONS ADMSOUSFONC ON (ADMFONC.IDFONCTION = ADMSOUSFONC.IDFONCTION)
WHERE IDSOUSFONCTION NOT IN (
SELECT ADMSOUSFONC.IDSOUSFONCTION
FROM ADM_FONCTIONS ADMFONC
LEFT JOIN ADM_SOUSFONCTIONS ADMSOUSFONC ON (ADMFONC.IDFONCTION = ADMSOUSFONC.IDFONCTION)
LEFT JOIN ADM_FORMULAIRESFONCTIONS ADMFORMFONC ON (ADMSOUSFONC.IDSOUSFONCTION = ADMFORMFONC.IDSOUSFONCTION)
LEFT JOIN ADM_FORMULAIRES ADMFORM ON (ADMFORMFONC.IDFORMULAIRE = ADMFORM.IDFORMULAIRE)
WHERE IDFORMULAIRE = 1) |
Le problème est que j'ai une erreur parce que l'abréviation ADMFONC est utilisée dans les deux requêtes.
En mettant deux abbréviations différentes, ça passe...
J'ai le message d'erreur suivant :
Citation:
Dynamic SQL Error
SQL error code = -204
alias ADMFONC conflicts with an alias in the same statement
Statement: SELECT 'VRAI' AS CONTENU, ADMFONC.IDFONCTION, ADMFONC.NOMFONCTION, ADMSOUSFONC.IDSOUSFONCTION, ADMSOUSFONC.NOMSOUSFONCTION
FROM ADM_FONCTIONS ADMFONC
LEFT JOIN ADM_SOUSFONCTIONS ADMSOUSFONC ON (ADMFONC.IDFONCTION = ADMSOUSFONC.IDFONCTION)
LEFT JOIN ADM_FORMULAIRESFONCTIONS ADMFORMFONC ON (ADMSOUSFONC.IDSOUSFONCTION = ADMFORMFONC.IDSOUSFONCTION)
LEFT JOIN ADM_FORMULAIRES ADMFORM ON (ADMFORMFONC.IDFORMULAIRE = ADMFORM.IDFORMULAIRE)
WHERE IDFORMULAIRE = 1
UNION
SELECT 'FAUX' AS CONTENU, ADMFONC.IDFONCTION, ADMFONC.NOMFONCTION, ADMSOUSFONC.IDSOUSFONCTION, ADMSOUSFONC.NOMSOUSFONCTION
FROM ADM_FONCTIONS ADMFONC
LEFT JOIN ADM_SOUSFONCTIONS ADMSOUSFONC ON (ADMFONC.IDFONCTION = ADMSOUSFONC.IDFONCTION)
WHERE IDSOUSFONCTION NOT IN (
SELECT ADMSOUSFONC.IDSOUSFONCTION
FROM ADM_FONCTIONS ADMFONC
LEFT JOIN ADM_SOUSFONCTIONS ADMSOUSFONC ON (ADMFONC.IDFONCTION = ADMSOUSFONC.IDFONCTION)
LEFT JOIN ADM_FORMULAIRESFONCTIONS ADMFORMFONC ON (ADMSOUSFONC.IDSOUSFONCTION = ADMFORMFONC.IDSOUSFONCTION)
LEFT JOIN ADM_FORMULAIRES ADMFORM ON (ADMFORMFONC.IDFORMULAIRE = ADMFORM.IDFORMULAIRE)
WHERE IDFORMULAIRE = 1)
Merci pour votre aide,
Alexandre.