Notice: Error: Column 'name' in order clause

LeorLindek -  
LeorLindel Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous,

Voila, j'ai une table "customer" qui contient ces deux colonnes (entre autres) :

customer_group_id
interest_group_id

ainsi que deux tables :

1 - customer_group_description
2 - interestt_group_description

Qui contiennent les colonnes suivantes :

1 -
customer_group_id
language_id
name

2 -
interest_group_id
language_id
name

Voici ma requête php qui doit me servir à récupérer le champ "name"

		$sql = "SELECT * , CONCAT( c.firstname, ' ', c.lastname ) AS name, cgd.name AS customer_group, igd.name AS interest_group
		FROM " . DB_PREFIX . "customer c
		LEFT JOIN " . DB_PREFIX . "customer_group_description cgd 
		ON ( c.customer_group_id = cgd.customer_group_id )
		LEFT JOIN " . DB_PREFIX . "interest_group_description igd 
		ON ( c.interest_group_id = igd.interest_group_id )
		WHERE igd.language_id = '" . (int)$this->config->get('config_language_id') . "'
		";


Et je me retrouve avec une ambiguïté sur le champ "name' !

Où se trouve mon erreur ?



4 réponses

galou00 Messages postés 642 Date d'inscription   Statut Membre Dernière intervention   80
 
Salut,
Moi dès la première ligne j'éviterais le *
Selectionne exactement ce que tu veux : <table>.<champ>
Si tu veux tout, écris tout.
Car actuellement quand tu fais select * from...
Il va selectionner cgd.name et igd.name
Or, il ne rassemble pas deux colonnes différentes dans une seule (sauf si tu fais un UNION (ALL).
De plus, tu renomes ton champs "name". Peut-être qu'il n'aime pas ça... essaie de voir de ce côté là en tout cas...
0
Utilisateur anonyme
 
Bonjour,

Je suis d'accord avec galou00.
Est ce que tu peux mettre le "echo" de ta requete s'il te plait ?

0
LeorLindek
 
Je vais faire un essai en mettant les champs concernés plutôt que *

Voila l'appel :
<?php echo $customer['interest_group']; ?>
0
LeorLindel Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
Je viens donc de faire cette requête :
  $sql = "SELECT cgd.customer_group_id, igd.interest_group_id, cgd.name, igd.name, CONCAT( c.firstname, ' ', c.lastname ) AS name, cgd.name AS customer_group, igd.name AS interest_group 
  FROM " . DB_PREFIX . "customer c 
  LEFT JOIN " . DB_PREFIX . "customer_group_description cgd  
  ON ( c.customer_group_id = cgd.customer_group_id ) 
  WHERE cgd.language_id = '" . (int)$this->config->get('config_language_id') . "' 
  LEFT JOIN " . DB_PREFIX . "interest_group_description igd  
  ON ( c.interest_group_id = igd.interest_group_id ) 
  WHERE igd.language_id = '" . (int)$this->config->get('config_language_id') . "' 
  "; 

Et voici l'erreur engendrée :
Notice: Error: 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 'LEFT JOIN 1531_interest_group_description igd ON ( c.interest_group_id = igd' at line 6 
Error No: 1064
0