Erreur requete suite à changement d'hebergeur

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Erreur requete suite à changement d'hebergeur

par manuscle » 02 févr. 2006, 17:04

La réponse de cyrano est bonne, j'ai refait la requete et maintenant ça fonctionne correctement! Par contre il ne faut pas mettre deux fois "LEFT JOIN maj AS a" car sinon il renvoie cette erreur : "Not unique table/alias : 'a' ", j'ai donc fait la requete suivante :

Code : Tout sélectionner

$select = "SELECT a.maj_id, DATE_FORMAT(a.maj_date,'%Y%m%d') AS maj_datefr, a.maj_fichier, a.maj_status, b.fab_nom, b.fab_rep, c.type_nom, c.type_cat "; $select .= "FROM fabricant AS b, type AS c "; $select .= "LEFT JOIN maj AS a ON a.fab_id = b.fab_id LEFT JOIN maj ON a.type_id = c.type_id LEFT JOIN rel_abo_client AS d ON d.abo_id = c.abo_id "; $select .= "WHERE a.maj_id IS NOT NULL "; $select .= "AND d.client_id = '$id'";
Je n'ai pas vérifié si ça marche aussi avec les parenthèses....

Merci encore pour votre aide! ça faisait longtemps que je n'étais pas venu sur phpFrance, mais ça a l'air toujours aussi sympa! :wink:

par zeus » 02 févr. 2006, 16:50

Essaye en mettant des parenthèses autour des jointures

Code : Tout sélectionner

SELECT a.maj_id, DATE_FORMAT(a.maj_date,'%Y%m%d') AS maj_datefr, a.maj_fichier, a.maj_status, b.fab_nom, b.fab_rep, c.type_nom, c.type_cat FROM (((`fabricant` AS b, `type` AS c LEFT JOIN `maj` AS a ON b.fab_id = a.fab_id) LEFT JOIN `maj` AS a ON c.type_id = a.type_id) LEFT JOIN `rel_abo_client` AS d ON c.abo_id = d.abo_id) WHERE a.maj_id IS NOT NULL AND d.client_id = '2';

par Cyrano » 02 févr. 2006, 16:17

Sous toutes réserves, c'est peut-être bien le AND dans un LEFT JOIN qui bloque. Proposition non testée :

Code : Tout sélectionner

SELECT a.maj_id, DATE_FORMAT(a.maj_date,'%Y%m%d') AS maj_datefr, a.maj_fichier, a.maj_status, b.fab_nom, b.fab_rep, c.type_nom, c.type_cat FROM `fabricant` AS b, `type` AS c LEFT JOIN `maj` AS a ON b.fab_id = a.fab_id LEFT JOIN `maj` AS a ON c.type_id = a.type_id LEFT JOIN `rel_abo_client` AS d ON c.abo_id = d.abo_id WHERE a.maj_id IS NOT NULL AND d.client_id = '2';
Mais sans garantie aucune, j'ai un doute sur quelques points.

Erreur requete suite à changement d'hebergeur

par manuscle » 02 févr. 2006, 16:03

Bonjur à tous!

Je viens de changer d'hebergeur et lors des tests, j'ai une erreur de syntaxe qui n'apparaissait pas sur l'ancien hebergeur. je n'arrive pas à savoir où se situe mon erreur car j'ai vérifié ma base et tout est bon, peut etre pouvez-vous m'aider à savoir que je suis maintenant hébergé chez OVH .

Voici la requete:

Code : Tout sélectionner

SELECT a.maj_id, DATE_FORMAT(a.maj_date,'%Y%m%d') AS maj_datefr, a.maj_fichier, a.maj_status, b.fab_nom, b.fab_rep, c.type_nom, c.type_cat FROM fabricant b, type c LEFT JOIN maj a, rel_abo_client d ON a.fab_id = b.fab_id AND a.type_id = c.type_id AND d.abo_id = c.abo_id WHERE a.maj_id IS NOT NULL AND d.client_id='2'
Et voici l'erreur :

Code : Tout sélectionner

You have an error in your SQL syntax near ' rel_abo_client d ON a.fab_id = b.fab_id AND a.type_id = c.type_id AND d.abo_id ' at line 1
Je ne sais pas si je dois donner plus de détails, auquel cas dites-le moi

Merci pour votre aide!

Manuscle