Requete qui passe sur hebergeur mais pas en local

Eléphant du PHP | 149 Messages

04 mars 2008, 11:44

Bonjour à tous!

J'ai une requête qui passe pas en local (wamp 2.0) alors que chez mon hébergeur ça passe:

Structure des tables :

Code : Tout sélectionner

Server version 4.0.25-standard-log CREATE TABLE `fabricant` ( `fab_id` int(10) NOT NULL auto_increment, `fab_nom` varchar(255) NOT NULL default '', `fab_rep` varchar(255) NOT NULL default '', PRIMARY KEY (`fab_id`), KEY `fab_id` (`fab_id`), KEY `fab_nom` (`fab_nom`), KEY `fab_rep` (`fab_rep`) ) TYPE=MyISAM; CREATE TABLE `maj` ( `maj_id` int(10) NOT NULL auto_increment, `fab_id` int(10) NOT NULL default '', `type_id` int(10) NOT NULL default '', `maj_fichier` varchar(255) NOT NULL default '', `maj_status` int(1) NOT NULL default '0', `maj_date` date NOT NULL default '0000-00-00', PRIMARY KEY (`maj_id`), KEY `fab_id` (`fab_id`), KEY `maj_date` (`maj_date`), KEY `maj_fichier` (`maj_fichier`), KEY `maj_id` (`maj_id`), KEY `maj_status` (`maj_status`), KEY `type_id` (`type_id`) ) TYPE=MyISAM; CREATE TABLE `type` ( `type_id` int(10) NOT NULL default '0', `type_num` decimal(10,0) NOT NULL default '0', `type_nom` varchar(255) NOT NULL default '', `type_cat` varchar(255) NOT NULL default '', `abo_id` tinyint(10) NOT NULL default '0', PRIMARY KEY (`type_id`), KEY `abo_id` (`abo_id`), KEY `type_cat` (`type_cat`), KEY `type_id` (`type_id`), KEY `type_nom` (`type_nom`), KEY `type_num` (`type_num`) ) TYPE=MyISAM;

Code : Tout sélectionner

SELECT COUNT(*) FROM fabricant b, type c LEFT JOIN maj a ON a.fab_id = b.fab_id AND a.type_id = c.type_id WHERE a.maj_id IS NOT NULL Message de MySQL : Unknown column 'b.fab_id' in 'on clause'
Chez mon hébergeur je suis en Mysql 4 avec php 4, j'essaie de migrer en mysql 5 avec php 5, c'est pour cela que j'ai installé la dernière version de wamp. Avant, j'étais sous easyphp 1.8 et je n'avais pas ce problème. Je pense que mysql 5 doit avoir une syntaxe différente pour les jointures..... mais je n'arrive pas à trouver.
J'ai essayé également ceci :

Code : Tout sélectionner

SELECT COUNT(*) FROM fabricant, type LEFT JOIN maj a USING (fab_id, type_id) WHERE a.maj_id IS NOT NULL
J'obtiens quasi la même erreur : Unknown fab_id in 'from' clause

Merci d'avance!
"Si tu travailles avec un marteau-piqueur pendant un tremblement de terre, désynchronise-toi, sinon tu travailles pour rien."
JC Vandamme.

d0m
Mammouth du PHP | 1141 Messages

04 mars 2008, 11:52

Salut,

vérifie dans ta table fabricant si le champ fab_id existe bien.

Eléphant du PHP | 149 Messages

04 mars 2008, 11:56

Le champ fab_id existe bien car lorsque je fait une requete du style "SELECT * FROM fabricant" j'obtiens bien un résultat. Dès lors que je met la clause ON , j'ai une erreur MySQL

Je viens de découvrir que j'ai un message dans phpMyAdmin lorsque je suis sur ma base :
Certaines fonctionnalités ayant trait aux tables reliées sont désactivées. Pour une analyse du problème, cliquez ici.
Et lorsque je clique j'ai ces messages :
PMA Database ... en erreur
Fonctions relationnelles désactivé
Je me demande si ce n'est pas la source du problème


Je viens d'aller voir sur le phpMyAdmin de l'hébergeur et j'ai le même message d'erreur bien que la rquête passe parfaitement......là je comprend plus rien! :?

Bon j'ai résolu le problème en faisant ça :

Code : Tout sélectionner

SELECT COUNT(*) FROM fabricant b, type c, maj a WHERE b.fab_id = a.fab_id AND c.type_id = a.type_id
J'aimerais quand même savoir pourquoi ça marche d'un coté et pas de l'autre?! :roll:
"Si tu travailles avec un marteau-piqueur pendant un tremblement de terre, désynchronise-toi, sinon tu travailles pour rien."
JC Vandamme.