PB LEFT JOIN pour Mysql4 sur Mysql5

Bonjour,
voici ma requete :
$sql = "SELECT DISTINCT ad_id, cat_id, subject, descript, add_date, type, price";
$sql .= ", name as country_name, statename as state_name ";
$sql .= " FROM ".$prefix."_classifieds_ads , ".$prefix."_classifieds_category";
$sql .= " LEFT JOIN ".$prefix."_classifieds_country ON (country_id=id)";
$sql .= " LEFT JOIN ".$prefix."_classifieds_states ON (state_id=stateid)";
$sql .= " WHERE valid=1 AND exp_date>$time ";
$sql .= " AND $sql_add";
$sql .= " ORDER BY $sortby $order";
$sql .= " LIMIT $initAds, $maxAds";

$result = mysql_query($sql) or error( mysql_error()."erreur de la requete" );

et hélas le résultat est : "Erreur: Unknown column 'country_id' in 'on clause'erreur de la requete"
alors que les champs sont bien présents et que ça fonctionnait très bien sous Mysql 4

8 réponses

  1. bonjour,
    ne faudrait-il pas mettre country_id dans le select ?
    -1
    1. Bonjour

      Le message est clair : il n'y a pas de champ country_id dans la table, alors que ta requête y fait référence.
      Si tu es sûr que le champ existe, une suggestion : je n'ai pas ma doc mysql sous la main, mais l'ordre des champs importe peut-être dans un left join , et il aurait fallu écrire ON (id=country_id)
      0
      1. merci de vous être penchés sur le pb

        mais sans le id_country dans le select ça fonctionnait bien avant, et l'ordre du JOIN est bon
        croyez moi j'ai fait ces essais là avant de vous poser la question ;)

        cordialement
        0
        1. mais sans le id_country dans le select ça fonctionnait bien avant, et l'ordre du JOIN est bon
          croyez moi j'ai fait ces essais là avant de vous poser la question ;)

          avant quoi, qu'est-ce qui a été modifié, c'est peut être là qu'il faut voir !
          -1
          1. ce qui a été modifié : le serveur de mon hébergeur (il est passé de PH4/Mysql4 à la version 5 de chaque)
            0
            1. bonjour,
              tu as essayé avec des alias ?
              -1
              1. voici un exemple:
                SELECT a.id, b.id, a.name, c.name FROM table_1 a,table_2 b, table_3 c ;

                Cela permet de repérer de quel table est issu le premier champs id : ici table_1

                Je ne sais pas si ca va solutionner ton problème, mais cela nous permettra de savoir à quelle table appartiennent tes champs.
                -1