Notice: Error: Column 'name' in order clause

LeorLindek -  
LeorLindel Messages postés 6 Statut Membre -
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

  1. galou00 Messages postés 662 Statut Membre 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
  2. pandorz
     
    Bonjour,

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

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

    Voila l'appel :
    <?php echo $customer['interest_group']; ?>
    0
  4. LeorLindel Messages postés 6 Statut Membre
     
    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