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

Adaptive Server Enterprise Sybase Discussion :

Insert select dans table temporaire


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Insert select dans table temporaire
    J'ai une erreur que je n'arrive pas a corriger.
    Est ce que qqn pourrait m'aider.

    Merci

    Prérequis :
    CREATE table #tempo
    (
    code_spec1 char(3),
    action char(1) null
    )


    Code :
    -- == J'insere dans la table #tempo avec la valeur 'I' les
    -- == specificites du produit qui n'existent pas dans cette table

    INSERT #tempo
    SELECT code, 'I'
    FROM SPECIFICITE
    WHERE id_produit = 525000
    AND NOT EXIST (SELECT 1 FROM #tempo WHERE code_spec1 = code_spec)


    Resultat :
    Server Message: Number 156, Severity 15
    Server 'DEV', Line 5:
    Incorrect syntax near the keyword 'SELECT'.
    Server Message: Number 102, Severity 15
    Server 'DEV', Line 5:
    Incorrect syntax near ')'.

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Bon,

    je suis passé a coté sans le voir:

    Ce n'est pas AND NOT EXIST mais AND NOT EXISTS

    J'avais oublié le S.

    Par contre, autre soucis, celui des memes noms de colonne entre les 2 tables qui me fait mettre un 1 (code_spec1) pour une colonne des 2 tables. Mais cela ne suffit pas car
    j'ai une erreur encore :
    Server Message: Number 207, Severity 16
    Server 'DEV', Line 1:
    Invalid column name 'code_spec'.

    Je vais voir si je peux prefixer les tables.

  3. #3
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    C'est EXISTS, pas EXIST...

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2003
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par mpeppler Voir le message
    C'est EXISTS, pas EXIST...

    Michael
    Oui en effet, j'ai corrigé.

    Sinon, je cloture le pb avec la requete final. En prefixant les tables ca marche :

    INSERT #tempo
    SELECT t.code, 'I'
    FROM SPECIFICITE t
    WHERE t.id_produit = 525000
    AND NOT EXIST (SELECT 1 FROM #tempo l WHERE l.code_spec1 = t.code_spec)


    J'ai trouvé la reponse dans un autre post qui parle du mot clé EXISTS :
    SELECT t.myColumns
    FROM myTable t
    WHERE EXISTS( SELECT 1 FROM lookupTable l WHERE l.allCodes = t.myCode )

    on peut utiliser apparemment une autre SQL :

    SELEC T.mycolumns
    FROM MyTable T
    INNER JOIN LookupTable L ON L.allCodes = T.MyCode


    Je ne suis pas sur que cela soit plus performant. Il faudrait voir ce que genere le plan d'execution.

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    J'ai récemment fait pas mal d'optim sur ce genre de code, et la forme avec la jointure avait tendance à être moins performante que le WHERE EXISTS ou WHERE IN (...).

    Mais cela dépend peut-être du cas précis.

    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

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

Discussions similaires

  1. [10g] Insertion d'une table temporaire dans 2 tables
    Par Zidmann dans le forum SQL
    Réponses: 25
    Dernier message: 05/07/2013, 16h12
  2. Insertion dans Table Temporaire
    Par przvl dans le forum Requêtes
    Réponses: 5
    Dernier message: 22/03/2010, 14h27
  3. [SQL] Pb d'insertion donnée dans table, pb requête SQL
    Par PuppeT mAsTer dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 03/07/2006, 11h26
  4. Insertion valeurs dans table en visual basic
    Par frevale dans le forum Access
    Réponses: 2
    Dernier message: 06/09/2005, 09h23
  5. Insertion enregistrement dans table
    Par naidinp dans le forum ASP
    Réponses: 13
    Dernier message: 11/09/2003, 09h56

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