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

MySQL : requêtes SELECT imbriquées

8 réponses
Avatar
O.L.
Bonjour,

J'ai fait un script PHP qui marche très bien chez moi sur mon serveur
Wamp avec MySQL 4.1.8.
Ce script fait une requête MySQL imbriquée, du genre :
select id, (select name from other_table where field=id) from my_table

Mais quand j'ai déménagé tout ça chez mon hébergeur Internet, qui lui
tourne avec MySQL 3.23.58, la requête ne marche plus : il me trouve une
erreur de syntaxe juste après la première parenthèse.

D'après vous, c'est une affaire de versions de MySQL, avec une ancienne
version plus bête que la nouvelle (si oui, quelle version faut il ?
:-/) ? Ou bien autre chose ... ?

Merci d'avance pour vos idées,
Olivier

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net

8 réponses

Avatar
Antoun



MySQL supporte les requêtes imbriquées depuis la version 4.1.




OK, merci pour l'info ! :)
Je vais me débrouiller pour héberger ça ailleurs ... Ou changer mon
script :-/




généralement, l'astuce consiste à remplacer la sous-requête par une
table temporaire (CREATE TEMPORARY TABLE TOTO SELECT...)
Avatar
O.L.
Le 30/10/2005, Antoun a supposé :



MySQL supporte les requêtes imbriquées depuis la version 4.1.




OK, merci pour l'info ! :)
Je vais me débrouiller pour héberger ça ailleurs ... Ou changer mon script
:-/




généralement, l'astuce consiste à remplacer la sous-requête par une table
temporaire (CREATE TEMPORARY TABLE TOTO SELECT...)



Tiens, je connaissais pas ça, ça a l'air pratique ... :)
Mais en essayant de l'utiliser, ça n'a rien donné. J'ai fait :

CREATE TEMPORARY TABLE TOTO SELECT * from matable;
select * from TOTO;

Et PHPMyAdmin ne m'a rien sorti, ni erreur ni données :-/
Where is the mistake ?

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net
Avatar
Antoun
Tiens, je connaissais pas ça, ça a l'air pratique ... :)
Mais en essayant de l'utiliser, ça n'a rien donné. J'ai fait :

CREATE TEMPORARY TABLE TOTO SELECT * from matable;
select * from TOTO;

Et PHPMyAdmin ne m'a rien sorti, ni erreur ni données :-/
Where is the mistake ?



"matable" ne serait-elle pas vide ?
Avatar
O.L.
Antoun a formulé la demande :
Tiens, je connaissais pas ça, ça a l'air pratique ... :)
Mais en essayant de l'utiliser, ça n'a rien donné. J'ai fait :

CREATE TEMPORARY TABLE TOTO SELECT * from matable;
select * from TOTO;

Et PHPMyAdmin ne m'a rien sorti, ni erreur ni données :-/
Where is the mistake ?



"matable" ne serait-elle pas vide ?



Non ! :-/

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net
Avatar
Jacques Caron
Salut,

On Mon, 31 Oct 2005 10:52:51 +0100, O.L. wrote:

CREATE TEMPORARY TABLE TOTO SELECT * from matable;
select * from TOTO;

Et PHPMyAdmin ne m'a rien sorti, ni erreur ni données :-/
Where is the mistake ?



Si ce sont deux requêtes séparées sur phpmyadmin, il est vraisemblable que
ce soit aussi deux connexions (sessions) séparées sur la base de données,
donc la table créée dans la première ne serait pas visible dans la
deuxième. Mais ça devrait faire un message d'erreur, dans ce cas...

Et il ne manquerait pas un "AS"?

Jacques.
--
Oxado http://www.oxado.com/
Avatar
O.L.
Jacques Caron avait écrit le 01/11/2005 :
Salut,

On Mon, 31 Oct 2005 10:52:51 +0100, O.L. wrote:

CREATE TEMPORARY TABLE TOTO SELECT * from matable;
select * from TOTO;

Et PHPMyAdmin ne m'a rien sorti, ni erreur ni données :-/
Where is the mistake ?



Si ce sont deux requêtes séparées sur phpmyadmin, il est vraisemblable que
ce soit aussi deux connexions (sessions) séparées sur la base de données,
donc la table créée dans la première ne serait pas visible dans la deuxième.
Mais ça devrait faire un message d'erreur, dans ce cas...

Et il ne manquerait pas un "AS"?



Où ça ?
(personnellement je n'ai eu jamais l'occasion d'utiliser de "AS" !)

--
Olivier Ligny
Créateur web free-lance / www.cyber-tamtam.net
Avatar
Jacques Caron
Salut,

On Wed, 02 Nov 2005 10:44:10 +0100, O.L. wrote:

Jacques Caron avait écrit le 01/11/2005 :
Et il ne manquerait pas un "AS"?



Où ça ?
(personnellement je n'ai eu jamais l'occasion d'utiliser de "AS" !)



En postgreSQL c'est CREATE [TEMPORARY] TABLE <name> AS <query>.

Jacques.
--
Oxado http://www.oxado.com/
Avatar
Pierre G
Jacques Caron wrote:

En postgreSQL c'est CREATE [TEMPORARY] TABLE <name> AS <query>.



Avez-vous essayé cette syntaxe ?

CREATE TEMPORARY TABLE tbl_name
LIKE old_tbl_name;

Pierre.
________________________________________________________________
échangez opinions et commentaires dans les forums de discussion.
http://www.usenetgratuit.com/