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 :

Error Code : 1066 Not unique table/alias


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 5
    Points
    5
    Par défaut Error Code : 1066 Not unique table/alias
    Bonjour,
    j'ai une erreur :

    Error Code : 1066
    Not unique table/alias: 'win_playlist'
    (0 ms taken)

    sur la requete :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT 
    	win_user.iduser AS iduser,	
    	win_user.idplaylist AS idplaylist,	
    	win_user.playlist AS playlist,	
    	win_playlist.idplaylist AS idplaylist_wi,	
    	win_playlist.idvideo AS idvideo,	
    	win_video.idvideo AS idvideo_wi,	
    	win_video.video AS video
    FROM 
    	win_user LEFT OUTER JOIN win_playlist ON win_playlist.idplaylist	=	win_user.idplaylist,	
    	win_playlist LEFT OUTER JOIN win_video ON win_video.idvideo	=	win_playlist.idvideo
    WHERE 
    	(
    	win_user.iduser = {11}
    )
    Je ne comprends pas pourquoi, quelqu'un aurait il une idée
    merci

  2. #2
    Membre habitué Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Points : 153
    Points
    153
    Par défaut
    Bonjour,

    Je pense que ça vient du fait que tu donnes un alias à tes champs mais que tu ne les utilise pas après dans ta requête.

    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    win_user LEFT OUTER JOIN win_playlist ON win_playlist.idplaylist = win_user.idplaylist,	
    win_playlist LEFT OUTER JOIN win_video ON win_video.idvideo = win_playlist.idvideo
    tu devrais mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    win_user LEFT OUTER JOIN win_playlist ON idplaylist_wi = idplaylist,	
    win_playlist LEFT OUTER JOIN win_video ON idvideo_wi = idvideo

  3. #3
    Membre averti Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Points : 332
    Points
    332
    Par défaut
    FROM win_user
    LEFT OUTER JOIN win_playlist ON win_playlist.idplaylist= win_user.idplaylist,
    win_playlist LEFT OUTER JOIN win_video ON win_video.idvideo = win_playlist.idvideo
    WHERE
    (
    win_user.iduser = {11}
    )
    couleur = erreur


    tu devrais mettre :

    Code :

    win_user LEFT OUTER JOIN win_playlist ON idplaylist_wi = idplaylist,
    win_playlist LEFT OUTER JOIN win_video ON idvideo_wi = idvideo

    des jointures sur des alias ?

  4. #4
    Membre habitué Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Points : 153
    Points
    153
    Par défaut
    Je ne suis pas sûr mais il me semble avoir eu le même problème (il y a quelques temps) et que c'était un problème d'alias.
    Mais maintenant que tu le dis jota5450, je n'avais même pas fait attention aux { } autour du 11 qui sont certainement la source de l'erreur. J'avoue ma faute ^^.

    En passant je ne pense pas que les ( ) après le Where soit nécessaires.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci pour votre réponse, cela ne fonctionne toujours pas, les suggestions renvoient la même erreur, même en retirant les alias :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT 
    	win_user.iduser,
    	win_user.idplaylist,
    	win_user.playlist,
    	win_playlist.idplaylist,
    	win_playlist.idvideo,
    	win_video.idvideo,
    	win_video.video
    FROM 
    	win_user LEFT OUTER JOIN win_playlist ON win_playlist.idplaylist	=	win_user.idplaylist,
    	win_playlist LEFT OUTER JOIN win_video ON win_video.idvideo	=	win_playlist.idvideo
    WHERE 
    	(
    	win_user.iduser = '5'
    )
    j'ai "résolu" le problème en utilisant la vieille méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    SELECT
    win_user.iduser AS iduser,  
    win_user.idplaylist AS idplaylist,  
    win_user.playlist AS playlist,  
    win_playlist.idvideo AS idvideo ,
    win_playlist.rang AS rang,
    win_video.idvideo AS idvideo2 ,  
    win_video.video AS video ,  
    win_video.iduser AS iduser2
     
    FROM
    win_user,win_playlist,win_video
    WHERE
    win_playlist.idvideo = win_video.idvideo
    AND
    win_user.idplaylist = win_playlist.idplaylist
    AND   
    win_user.iduser = '5'
    mais cela ne me satisfait pas car j'aimerai comprendre pourquoi cela ne fonctionne pas

  6. #6
    Membre habitué Avatar de lou-03
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 156
    Points : 153
    Points
    153
    Par défaut
    C'est peut être dû à tes parenthèses :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    WHERE 
    	(
    	win_user.iduser = '5'
    )
    Que tu n'as plus mis dans ta deuxième méthode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    WHERE
    win_playlist.idvideo = win_video.idvideo
    AND
    win_user.idplaylist = win_playlist.idplaylist
    AND   
    win_user.iduser = '5'
    Personellement je n'en ai jamais mises. Alors je ne sais pas l'impact que ça a sur la requête.

  7. #7
    Membre averti Avatar de jota5450
    Inscrit en
    Janvier 2006
    Messages
    263
    Détails du profil
    Informations personnelles :
    Âge : 48

    Informations forums :
    Inscription : Janvier 2006
    Messages : 263
    Points : 332
    Points
    332
    Par défaut
    comme ma première reponse:

    couleur= erreur....




    dans ma premère citation: il y a deux couleurs....
    ta syntaxe est fausse....

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci de poster, mais désolé, les suggestions ne fonctionnent pas et renvoient la même erreur
    Vraiment très étrange comme erreur ça!

  9. #9
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Les jointures s'écrivent comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FROM table1
    INNER JOIN table2 ON ...
    INNER JOIN table3 ON ...
    Or, dans ton exemple, tu les écris plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    FROM table1
    INNER JOIN table2 ON ...
    table2 INNER JOIN table3 ON ...
    Et donc, il y a un table2 en trop.

    Essaie comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    SELECT 
    	win_user.iduser AS iduser,	
    	win_user.idplaylist AS idplaylist,	
    	win_user.playlist AS playlist,	
    	win_playlist.idplaylist AS idplaylist_wi,	
    	win_playlist.idvideo AS idvideo,	
    	win_video.idvideo AS idvideo_wi,	
    	win_video.video AS video
    FROM win_user 
    LEFT OUTER JOIN win_playlist ON win_playlist.idplaylist = win_user.idplaylist
    LEFT OUTER JOIN win_video ON win_video.idvideo = win_playlist.idvideo
    WHERE 
    	(
    	win_user.iduser = {11}
    )
    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2010
    Messages : 8
    Points : 5
    Points
    5
    Par défaut
    Merci Ced,

    cela fonctionne. Juste pour info : y a t'il une phrase ou une astuce pour ce rappeler des éléments que l'on veux "compléter" si inexistant dans l'autre table lorsque l'on fait des jonctions. J'ai toujours du mal à me souvenir si c'est la table de droite ou de gauche que l'on complète.
    Je ne sais pas si je m'explique bien, comprends tu ce que je veux dire?

  11. #11
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    Citation Envoyé par Nyvad Voir le message
    Je ne sais pas si je m'explique bien, comprends tu ce que je veux dire?
    Euh, non, pas trop

    En fait, c'est fonction de l'écriture de ta jointure (jointure à gauche ou jointure à droite). En règle générale, on privilégie la jointure à gauche, et elle est dite "à gauche" parce qu'on ramène toutes les données de la première table (celle "à gauche" de l'instruction LEFT JOIN), y compris si elles n'ont pas d'équivalent dans l'autre table jointe.

    ced
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

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

Discussions similaires

  1. Erreur "Not unique table/alias"
    Par arnesto dans le forum Requêtes
    Réponses: 4
    Dernier message: 29/05/2012, 15h29
  2. #1066 - Not unique table/alias:
    Par nexuspolaris dans le forum Requêtes
    Réponses: 12
    Dernier message: 28/05/2012, 15h49
  3. Not unique table/alias
    Par volledoen dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/10/2011, 16h24
  4. Not unique table/alias
    Par yann123456 dans le forum Requêtes
    Réponses: 4
    Dernier message: 24/03/2010, 17h14
  5. #1066 - Not unique table/alias
    Par mafilek dans le forum Requêtes
    Réponses: 4
    Dernier message: 17/04/2007, 16h38

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