Version complète: sur le forum Webmaster Hub : sous requete MysQL 4.0.25
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
cognotte
Bonjour,

Je suis en train de m'arracher les cheveux sur une requete qui fonctionnait tres bien sur mon ancien serveur (MySQL 4.1.11) et qui plante sur le nouveau (MySQL 4.0.25)!

Voici la requete en question :

CODE
SELECT CMD.id, `id_client` , `date_paiement` , `date_expedition` , `reference` , `prix` , `fr_port` , `moyen_paiement` , `numero_collissimo` , `status` , `adr_nom` , `adr_prenom` , `adr_ad1` , `adr_cp` , `adr_ville` , `adr_pays` , `OK` , CMD.comment, `mail` , `produit`
FROM `commande_tb` CMD, `client_tb` CLI
WHERE `reference` != ''
AND CMD.id
IN (

SELECT `id`
FROM `commande_tb`
WHERE `id` = '-1'
OR `id` = '3905'
OR `id` = '3918'
OR `id` = '3919'
OR `id` = '3934'
OR `id` = '3953'
OR `id` = '3931'
OR `id` = '3928'
OR `id` = '3926'
OR `id` = '3946'
OR `id` = '3935'
OR `id` = '3959'
OR `id` = '3988'
OR `id` = '3974'
OR `id` = '3903'
OR `id` = '3672'
)
AND CMD.id_client = CLI.id
ORDER BY `date_achat` ASC


et l'erreur :

#1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT `id` FROM `commande_tb` WHERE `id` = '-1' OR `id` = '


Quels sont les changements entre les deux versions de mysql qui provoquent ce genre d'erreur ???
Grominet
Les requêtes imbriquées ne fonctionneront qu'avec une version de MySQL 4.1 ou sup.

Il faudra formuler les requêtes autrement :

http://dev.mysql.com/doc/refman/5.0/fr/rew...subqueries.html
cognotte
Forcément je pouvais toujours chercher !

Merci de l'info
Spidetra
Elle sert à quoi la sous-requête ?
ce ne serait pas plus simple ça :
CODE
SELECT CMD.id, `id_client` , `date_paiement` , `date_expedition` , `reference` , `prix` , `fr_port` , `moyen_paiement` , `numero_collissimo` , `status` , `adr_nom` , `adr_prenom` , `adr_ad1` , `adr_cp` , `adr_ville` , `adr_pays` , `OK` , CMD.comment, `mail` , `produit`
FROM `commande_tb` CMD, `client_tb` CLI
WHERE `reference` != ''
AND CMD.id
IN ('-1', '3905', etc.... )
AND CMD.id_client = CLI.id
ORDER BY `date_achat` ASC


je n'arrrive vraiment pas à comprendre à quoi sert le second select ?
cognotte
Oula oui, ca marche beaucoup mieux blush.gif

Merci
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.