[PHP/MySQL] Requête qui ne fonctionne pas chez Free

:stuck_out_tongue:

J’ai une requête apparemment assez simple mais qui ne marche pas chez Free. Les bases sont créées, elle fonctionne impec chez moi (EasyPHP 1.8, config par défaut, MySQL 4.1.9, phpMyAdmin 2.6.1) mais pas chez Free (MySQL 4.0.22, phpMyAdmin 2.6.0).

Vlà ma requête :
[cpp]SELECT a.id_message, a.date_message, a.nom, a.email, a.siteperso, a.ville, a.pays, a.message, b.reply AS has_reply FROM livredor a, livredor b WHERE b.reply = a.id_message UNION SELECT id_message, date_message, nom, email, siteperso, ville, pays, message, NULL AS has_reply FROM livredor WHERE reply IS NULL AND id_message NOT IN (SELECT reply FROM livredor WHERE reply IS NOT NULL) ORDER BY date_message DESC LIMIT 0, 20[/cpp]

Pas super optimisée certes, mais qui fonctionne en principe…

Après quelques tests, il semblerait que le problème vienne du "NOT IN (SELECT reply…). Pourtant c’est standard ça non ?

C’est la requete imbriquée… :confused:

marche po avant MySQL 4.1 :confused:

Ouch !

Comment je peux faire alors ? Je vois pas trop comment faire cette requête d’une autre façon…

Tu peux tenter une vue, ou sinon décomposer en sous requête dans php.

Apparemment les INNER JOINT sont autorisés. J’ai ça :

[cpp]SELECT a.*, b.reply
FROM livredor a LEFT JOIN livredor b ON a.id_message=b.reply [/cpp]

Mais c’est pas encore exactement ce que je veux…

C’est bon, j’ai modifié un peu la requête et ça marche. Et puis les JOIN sont supportés par MySQL 4.0.22. :smiley: