Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1563 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Requête avec jointure qui fonctionne pas avec MySQL5

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] Requête avec jointure qui fonctionne pas avec MySQL5

n°1551600
BenJ9002
Posté le 30-04-2007 à 18:31:02  profilanswer
 

Bonjour,
 
Je m'arrache le peu de cheveux qu'il me reste avec une requête à jointures qui fonctionnait parfaitement avec MySQL4 et qui me renvoie une jolie série d'erreurs avec MySQL5.
 
Le monstre :

Code :
  1. SELECT r.nom_rub, c.id_cat, c.id_rub, nb_sujets, nb_reponses, nom_cat, date_der_message, der_message, date_message_lu, desc_cat
  2.    FROM `categories` AS c, `droits` AS d
  3.    LEFT JOIN `categories_suivi` AS s ON (c.id_cat=s.id_cat)
  4.    LEFT JOIN `rubriques` AS r ON (c.id_rub=r.id_rub)
  5.    WHERE (d.id_cat=c.id_cat AND d.id_statut=1 AND d.lecture=1 AND s.id_membre=1)
  6.    ORDER BY `ordre_rub`, `ordre_cat`


 
Les contenus des 2 bases de données sont exactement les mêmes (la base MySQL5 est une réplication de la base MySQL4), et la version MySQL5 me renvoit l'erreur Champ 'c.id_cat' inconnu dans on clause
 
Si je remplace LEFT JOIN `categories_suivi` AS s ON (c.id_cat=s.id_cat) par LEFT JOIN `categories_suivi` AS s USING (id_cat) et l'équivalent pour LEFT JOIN `rubriques`, je me retrouve avec une nouvelle erreur : Champ 'id_rub' inconnu dans from clause.
 
A noter aussi que la requête simple avec uniquement la jointure entre les tables categories et droits fonctionne correctement :

Code :
  1. SELECT c.id_cat, c.id_rub, nb_sujets, nb_reponses, nom_cat, date_der_message, der_message, desc_cat
  2.    FROM `categories` AS c, `droits` AS d
  3.    WHERE (d.id_cat = c.id_cat AND d.id_statut =1 AND d.lecture =1)
  4.    ORDER BY `ordre_cat`


 
Il y a des différences importante de gestion des jointures entre MySQL4 et MySQL5 ?
 
Si vous avez une idée de la source du problème, ça m'aiderai bien ;)  
 
Merci d'avance :)

mood
Publicité
Posté le 30-04-2007 à 18:31:02  profilanswer
 

n°1551611
pikti
I’ve done worse
Posté le 30-04-2007 à 19:13:28  profilanswer
 

Je n'ai pas la réponse mais pourquoi mélanger des jointures avec WHERE et d'autres avec JOIN ?
 
As-tu essayé :
 

Code :
  1. SELECT r.nom_rub, c.id_cat, c.id_rub, nb_sujets, nb_reponses, nom_cat, date_der_message, der_message, date_message_lu, desc_cat
  2.    FROM `categories` c
  3.    INNER JOIN `droits` d ON d.id_cat=c.id_cat
  4.    LEFT JOIN `categories_suivi` s ON c.id_cat=s.id_cat
  5.    LEFT JOIN `rubriques` r ON c.id_rub=r.id_rub
  6.    WHERE d.id_statut=1 AND d.lecture=1 AND s.id_membre=1
  7.    ORDER BY `ordre_rub`, `ordre_cat`


 
juste par curiosité :)

n°1551626
BenJ9002
Posté le 30-04-2007 à 19:56:12  profilanswer
 

Je mélange les jointures simplement parce que cette requête a été faite en plusieurs fois au fur et à mesure de l'évolution du besoin et que j'avais commencé par une bête jointure entre catégorie et droits à l'origine ;)  
 
En tous cas, ça à l'air de marcher comme il faut maintenant ... Je dois faire quelques tests quand même pour vérifier mais déjà un grand merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] Requête avec jointure qui fonctionne pas avec MySQL5

 

Sujets relatifs
Problème avec la fonction avg en double jointureles jointures mysql
mysql_query qui ne fonctionne pasPb onmouseover ne fonctionne pas
[MYSQL/PHP]Probleme lors d'un import CSVimport gros fichier SQL dans Mysql
connexion externe MYSQL impossible[MySQL/JDBC/JAVA] Problème de connexion à une DB
Test PHP / MySql Savoir si requete bien executée + prob CDO
Plus de sujets relatifs à : [MySQL] Requête avec jointure qui fonctionne pas avec MySQL5


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR