PB LEFT JOIN pour Mysql4 sur Mysql5
stefanix
-
Stef60 Messages postés 257 Statut Membre -
Stef60 Messages postés 257 Statut Membre -
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
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
-
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) -
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 -
ce qui a été modifié : le serveur de mon hébergeur (il est passé de PH4/Mysql4 à la version 5 de chaque)
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
-
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 ! -
-
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.