Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WD12 - MySQL 4.1.x

15 réponses
Avatar
I.G.LOG
Bonjour,
J'ai une requete UNION qui fonctionne sur mon poste local mais pas sur le
serveur. Le client est en version 5.1.11
Les versions des serveurs MySQL sont :
en local, version 4.1.22
sur le serveur, version 4.1.9-standard (sous Linux)

Voici la requete, très simple:

SELECT
ENS
FROM
(

(SELECT
ENSEMBLE AS ENS
FROM
artconst
WHERE
IDARTICLE = 0)

UNION ALL

(SELECT
ENSEMBLE AS ENS
FROM
artconst
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1
GROUP BY ENS)

) AS TableVirt

GROUP BY
ENS
ORDER BY
ENS

Ce que je ne comprends pas, c'est que j'ai des requètes UNION du même type
et beaucoup plus complexes qui fonctionnent sur le serveur 4.1.9-Standard
sur Linux ?!!
Avez-vous une idée du problème ?
Merci à tous

10 réponses

1 2
Avatar
I.G.LOG
Désolé, j'ai oublié de vous donner le message d'erreur sur le serveur
4.1.9-standard

ERREUR 1248: Every derived table must have its own alias

PS: la requete fonctionne sur serveur 4.1.22 (installé en local)
Avatar
Firetox
Bonjour,

oui ensuite en 5 c'est encore plus restrictif
il faut mettre un alias sur les unions car tu utilise la meme table dans les
unions

SELECT
ENS
FROM
(

(SELECT
Art1.ENSEMBLE AS ENS
FROM
artconst as Art1
WHERE
IDARTICLE = 0)

UNION ALL

(SELECT
Art2.ENSEMBLE AS ENS
FROM
artconst Art2
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1
GROUP BY ENS)

) AS TableVirt

GROUP BY
TableVirt.ENS
ORDER BY
TableVirt.ENS

devrait mieu fonctionner
tout cela semble un peu lourd mais ce n'est pas vrai car cela permet aussi
sur des requetes tres grosse en texte de savoir ou se situe l'erreur, par
exemple si tu as un message d'erreur sur art1.ensemble tu sais dans quelle
nion cela se trouve

Bon dev
@+

Firetox


"I.G.LOG" a écrit dans le message de news:
48e1f99c$0$963$
Désolé, j'ai oublié de vous donner le message d'erreur sur le serveur
4.1.9-standard

ERREUR 1248: Every derived table must have its own alias

PS: la requete fonctionne sur serveur 4.1.22 (installé en local)



Avatar
I.G.LOG
Bonjour Firetox

"Firetox" a écrit dans le message de news:
48e1fc08$0$9583$
Bonjour,

oui ensuite en 5 c'est encore plus restrictif
il faut mettre un alias sur les unions car tu utilise la meme table dans
les unions

SELECT
ENS
FROM
(

(SELECT
Art1.ENSEMBLE AS ENS
FROM
artconst as Art1
WHERE
IDARTICLE = 0)

UNION ALL

(SELECT
Art2.ENSEMBLE AS ENS
FROM
artconst Art2
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1
GROUP BY ENS)

) AS TableVirt

GROUP BY
TableVirt.ENS
ORDER BY
TableVirt.ENS




Malheureusement ca ne règle pas le problème :-( toujours l'erreur "Every
derived table..."
C'est vraiment un casse-tête. Les requetes UNION que nous avions vues
ensemble sont beaucoup plus compliquées que celle-ci et fonctionnent (et il
n'y a pas d'alias sur les tables "secondaires") ?!!!! Je n'y comprend plus
rien. J'ai passé la matinée à modifier cette requete, et même dans sa plus
simple expression ça ne passe pas.

Une nouvelle fois merci pour tes conseils
Avatar
Daniel
Bonjour,

MySQL 4.1.9 c'est peut être tout simplement qu'il y avait un bug sur
Union qui a été corrigé entre la version 4.19 et la 4.1.22.


http://dev.mysql.com/doc/refman/4.1/en/news-4-1-x.html

pour trouver les évolutions.

Il va surement être nécessaire de faire un update du noyau avec une
version plus récente. Normalement si on reste sur la même version 4.1,
c'est très rapide à faire. Penser toutefois à faire une sauvegarde, et
de ne pas effacer la version de prod (on ne sait jamais).

I.G.LOG a écrit :
Bonjour Firetox

"Firetox" a écrit dans le message de news:
48e1fc08$0$9583$
Bonjour,

oui ensuite en 5 c'est encore plus restrictif
il faut mettre un alias sur les unions car tu utilise la meme table dans
les unions

SELECT
ENS
FROM
(

(SELECT
Art1.ENSEMBLE AS ENS
FROM
artconst as Art1
WHERE
IDARTICLE = 0)

UNION ALL

(SELECT
Art2.ENSEMBLE AS ENS
FROM
artconst Art2
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1
GROUP BY ENS)

) AS TableVirt

GROUP BY
TableVirt.ENS
ORDER BY
TableVirt.ENS




Malheureusement ca ne règle pas le problème :-( toujours l'erreur "Every
derived table..."
C'est vraiment un casse-tête. Les requetes UNION que nous avions vues
ensemble sont beaucoup plus compliquées que celle-ci et fonctionnent (et il
n'y a pas d'alias sur les tables "secondaires") ?!!!! Je n'y comprend plus
rien. J'ai passé la matinée à modifier cette requete, et même dans sa plus
simple expression ça ne passe pas.

Une nouvelle fois merci pour tes conseils






--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
Firetox
visiblement tu as des paranthese en trop

essaye ceci :

SELECT
ENS
FROM
(

SELECT
Art1.ENSEMBLE AS ENS
FROM
artconst as Art1
WHERE
IDARTICLE = 0

UNION ALL

SELECT
Art2.ENSEMBLE AS ENS
FROM
artconst Art2
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1
GROUP BY ENS

) AS TableVirt

GROUP BY
TableVirt.ENS
ORDER BY
TableVirt.ENS

les selects dans l'union ne doitvent pas etre entre paranthese

Bon dev
@+

"I.G.LOG" a écrit dans le message de news:
48e200e5$0$929$
Bonjour Firetox

"Firetox" a écrit dans le message de news:
48e1fc08$0$9583$
Bonjour,

oui ensuite en 5 c'est encore plus restrictif
il faut mettre un alias sur les unions car tu utilise la meme table dans
les unions

SELECT
ENS
FROM
(

(SELECT
Art1.ENSEMBLE AS ENS
FROM
artconst as Art1
WHERE
IDARTICLE = 0)

UNION ALL

(SELECT
Art2.ENSEMBLE AS ENS
FROM
artconst Art2
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1
GROUP BY ENS)

) AS TableVirt

GROUP BY
TableVirt.ENS
ORDER BY
TableVirt.ENS




Malheureusement ca ne règle pas le problème :-( toujours l'erreur "Every
derived table..."
C'est vraiment un casse-tête. Les requetes UNION que nous avions vues
ensemble sont beaucoup plus compliquées que celle-ci et fonctionnent (et
il n'y a pas d'alias sur les tables "secondaires") ?!!!! Je n'y comprend
plus rien. J'ai passé la matinée à modifier cette requete, et même dans sa
plus simple expression ça ne passe pas.

Une nouvelle fois merci pour tes conseils



Avatar
I.G.LOG
SELECT
ENS
FROM
(

SELECT
Art1.ENSEMBLE AS ENS
FROM
artconst as Art1
WHERE
IDARTICLE = 0

UNION ALL

SELECT
Art2.ENSEMBLE AS ENS
FROM
artconst as Art2
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1

)
GROUP BY ENS


Non, toujours la même erreur :-(

De plus, je suis en train d'essayer sur un deuxième poste de dev. sur
lequel est installé MySQL 4.1.22-community-nt, et j'ai cette erreur; alors
que sur l'autre poste en 4.1.22 ça fonctionne (même sans les alias et avec
les doubles parenthèses) ???? Quelle différence y a t il entre ces versions
? Daniel, dans ce fil, pensait à une évolution entre la 4.1.9 et la 4.1.22.
Je suis allé voir les modifs de MySQL sans en trouver une concernant les
UNION
Avatar
I.G.LOG
"Daniel" a écrit dans le message de news:
48e20826$0$1133$
Bonjour,

MySQL 4.1.9 c'est peut être tout simplement qu'il y avait un bug sur Union
qui a été corrigé entre la version 4.19 et la 4.1.22.


http://dev.mysql.com/doc/refman/4.1/en/news-4-1-x.html

pour trouver les évolutions.

Il va surement être nécessaire de faire un update du noyau avec une
version plus récente. Normalement si on reste sur la même version 4.1,
c'est très rapide à faire. Penser toutefois à faire une sauvegarde, et de
ne pas effacer la version de prod (on ne sait jamais).




Bonjour,
Je ne trouve rien dans les évolutions concernant les requetes UNION.
De plus, je suis en train d'essayer sur un deuxième poste de dev. sur
lequel est installé MySQL 4.1.22-community-nt, et j'ai cette erreur 1248
"Every derived..." ; alors
que sur l'autre poste en 4.1.22 ça fonctionne ???!!!
Postes de même config XP Pro SP2. Seul le processeur change Pentium 4 contre
Athlon 2600+
Une idée ?
Merci
Avatar
Firetox
tu as bien l'alias sur la table globale ?
SELECT
tmpSELECT.ENS
FROM
(

SELECT
Art1.ENSEMBLE AS ENS
FROM
artconst as Art1
WHERE
IDARTICLE = 0

UNION ALL

SELECT
Art2.ENSEMBLE AS ENS
FROM
artconst as Art2
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1

) as tmpSELECT

GROUP BY ENS

a tester je ne vous pas de probleme particulier j'ai fait une recherche sur
internet
je trouve pas grand chose

@+
"I.G.LOG" a écrit dans le message de news:
48e22abc$0$893$
SELECT
ENS
FROM
(

SELECT
Art1.ENSEMBLE AS ENS
FROM
artconst as Art1
WHERE
IDARTICLE = 0

UNION ALL

SELECT
Art2.ENSEMBLE AS ENS
FROM
artconst as Art2
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1

)
GROUP BY ENS


Non, toujours la même erreur :-(

De plus, je suis en train d'essayer sur un deuxième poste de dev. sur
lequel est installé MySQL 4.1.22-community-nt, et j'ai cette erreur; alors
que sur l'autre poste en 4.1.22 ça fonctionne (même sans les alias et avec
les doubles parenthèses) ???? Quelle différence y a t il entre ces
versions ? Daniel, dans ce fil, pensait à une évolution entre la 4.1.9 et
la 4.1.22. Je suis allé voir les modifs de MySQL sans en trouver une
concernant les UNION



Avatar
Daniel
I.G.LOG a écrit :
"Daniel" a écrit dans le message de news:
48e20826$0$1133$
Bonjour,

MySQL 4.1.9 c'est peut être tout simplement qu'il y avait un bug sur Union
qui a été corrigé entre la version 4.19 et la 4.1.22.


http://dev.mysql.com/doc/refman/4.1/en/news-4-1-x.html

pour trouver les évolutions.

Il va surement être nécessaire de faire un update du noyau avec une
version plus récente. Normalement si on reste sur la même version 4.1,
c'est très rapide à faire. Penser toutefois à faire une sauvegarde, et de
ne pas effacer la version de prod (on ne sait jamais).




Bonjour,
Je ne trouve rien dans les évolutions concernant les requetes UNION.
De plus, je suis en train d'essayer sur un deuxième poste de dev. sur
lequel est installé MySQL 4.1.22-community-nt, et j'ai cette erreur 1248
"Every derived..." ; alors
que sur l'autre poste en 4.1.22 ça fonctionne ???!!!
Postes de même config XP Pro SP2. Seul le processeur change Pentium 4 contre
Athlon 2600+
Une idée ?
Merci




Regardez le fichier de configuration qui lance le moteur, il est
possible qu'il y ait des éléments qui diffèrent.
Le fichier par défaut est my.ini.

Il me semble qu'à partir de la version 4.1.xx il y a l'option SQL_mode
qui est apparu et qui fait que le moteur se comporte différemment (voir
l'aide à ce sujet).

Je n'ai pas suivi tout le thread, mais si ce n'est pas le cas lancer la
requête à partir de MySQL Query Browser.



Désolé mais pas le temps de regarder plus loin.

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
Firetox
c'est bien ca sur un forum en 4.1.9 j'ai trouve un mec qui a eu le meme
souci
les union plus select dans un from

SELECT
FROM (......
......
) aliasTableObligatoire

par contre pas de paranthese sur les select de l'union
c'est tout ce que j'ai trouvé avec une resolution sur le probleme qui a
l'air similaire

Bon dev
@+

"I.G.LOG" a écrit dans le message de news:
48e22abc$0$893$
SELECT
ENS
FROM
(

SELECT
Art1.ENSEMBLE AS ENS
FROM
artconst as Art1
WHERE
IDARTICLE = 0

UNION ALL

SELECT
Art2.ENSEMBLE AS ENS
FROM
artconst as Art2
WHERE
IDARTICLE <> 0
AND SYSTEMATIQUE = 1

)
GROUP BY ENS


Non, toujours la même erreur :-(

De plus, je suis en train d'essayer sur un deuxième poste de dev. sur
lequel est installé MySQL 4.1.22-community-nt, et j'ai cette erreur; alors
que sur l'autre poste en 4.1.22 ça fonctionne (même sans les alias et avec
les doubles parenthèses) ???? Quelle différence y a t il entre ces
versions ? Daniel, dans ce fil, pensait à une évolution entre la 4.1.9 et
la 4.1.22. Je suis allé voir les modifs de MySQL sans en trouver une
concernant les UNION



1 2