IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Erreur "Unknown column" dans un JOIN sous MySQL 5.0


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 54
    Par défaut Erreur "Unknown column" dans un JOIN sous MySQL 5.0
    bonjour,
    (super le nouveau forum!)

    j'aimerai savoir si sous mySQL5.0 ont peut effectuer des requetes mySQL4.1, qui fonctionnait sous mysql4.1 et plus sous mysql5.0 (par exemple les LEFT JOIN avec obligation de mettre un alias)
    ou alors une solution pour les faire passer en 5.1?

    Merci d'avance

  2. #2
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Citation Envoyé par bibiloute
    bonjour,
    (super le nouveau forum!)


    Citation Envoyé par bibiloute
    j'aimerai savoir si sous mySQL5.0 ont peut effectuer des requetes mySQL4.1, qui fonctionnait sous mysql4.1 et plus sous mysql5.0 (par exemple les LEFT JOIN avec obligation de mettre un alias)
    ou alors une solution pour les faire passer en 5.1?
    La syntaxe est sensiblement la même entre la 4.1 et la 5.0. Je n'ai pas souvenir de problèmes particuliers avec les LEFT JOIN

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 54
    Par défaut
    et en plus les reponses sont encore plus rapide! lol
    (on devrait faire des stats pour voir le forum le plus rapide lol)
    JE te file un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    SELECT DISTINCT CONCAT(area_id,'/',IFNULL(country_group_id,'0'),'/', country.id)
        as value, country.name
    FROM drp_countries country, drp_cities, drp_local_retailers, drp_prices, drp_items, drp_sub_functions, drp_functions, drp_products
    LEFT JOIN drp_countries_country_groups groups ON ( groups.country_id=country.id ) 
    WHERE drp_cities.country_id=country.id
        AND drp_local_retailers.city_id=drp_cities.id
        AND drp_prices.last=1
        AND drp_prices.retailer_id=drp_local_retailers.retailer_id
        AND drp_prices.item_id=drp_items.id
        AND drp_items.product_id=drp_products.id 
        AND drp_products.sub_function_id=drp_sub_functions.id
        AND drp_sub_functions.function_id=drp_functions.id
    GROUP BY drp_countries.id ORDER by name
    me genere :
    Unknown column 'country.id' in 'on clause'
    et sou smysql 4.1 ca passe!

  4. #4
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Et en mettant drp_countries.id au lieu de country.id ?

    Essaie aussi de parenthéser les jointures :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     FROM (drp_countries country, drp_cities, drp_local_retailers, drp_prices, drp_items, drp_sub_functions, drp_functions, drp_products)
    LEFT JOIN ...

  5. #5
    Membre Expert Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Par défaut
    Supposition confirmée par ceci :


    Previously, the comma operator (,) and JOIN both had the same precedence, so the join expression t1, t2 JOIN t3 was interpreted as ((t1, t2) JOIN t3). Now JOIN has higher precedence, so the expression is interpreted as (t1, (t2 JOIN t3)). This change affects statements that use an ON clause, because that clause can refer only to columns in the operands of the join, and the change in precedence changes interpretation of what those operands are.

    Example:
    CREATE TABLE t1 (i1 INT, j1 INT);
    CREATE TABLE t2 (i2 INT, j2 INT);
    CREATE TABLE t3 (i3 INT, j3 INT);
    INSERT INTO t1 VALUES(1,1);
    INSERT INTO t2 VALUES(1,1);
    INSERT INTO t3 VALUES(1,1);
    SELECT * FROM t1, t2 JOIN t3 ON (t1.i1 = t3.i3);

    Previously, the SELECT was legal due to the implicit grouping of t1,t2 as (t1,t2). Now the JOIN takes precedence, so the operands for the ON clause are t2 and t3. Because t1.i1 is not a column in either of the operands, the result is an Unknown column 't1.i1' in 'on clause' error. To allow the join to be processed, group the first two tables explicitly with parentheses so that the operands for the ON clause are (t1,t2) and t3:

    SELECT * FROM (t1, t2) JOIN t3 ON (t1.i1 = t3.i3);
    http://dev.mysql.com/doc/refman/5.0/en/join.html

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 54
    Par défaut
    Ok , desole pour la reponse si tardive...Ca va faire baisser les stats?

    donc en fait je connais les erreurs à corriger, je me suis goure en t'envoyant le copier/coller.
    Il y'a une difference entre les deux versions quand meme c que dans le FROM suivi d'un LEFT JOIN, on doit mettre les noms des tables entre parentheses sinon ca marche pas,(c'etait marque dans la remarque tu as mises d'ailleurs)... petite modif a faire donc ( a moins qu'elle le soit deja)

    voila merci pour tout et surtout pour ta rapidite de reponse.
    Bon continuation!
    a+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL-5.5] erreur 42S22 Unknown column
    Par diblasio dans le forum Requêtes
    Réponses: 3
    Dernier message: 16/04/2013, 23h24
  2. [MySQL] Erreur SQL ! Unknown column '' in 'field list'
    Par jump-jack dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/09/2009, 19h16
  3. erreur : #1054 - Unknown column 'Martin' in 'where clause'
    Par éric1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/08/2009, 15h29
  4. Réponses: 2
    Dernier message: 01/01/2009, 20h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo