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 et SQL. Discussion :

requete insert marche, delete plante . . .


Sujet :

Requêtes et SQL.

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 31
    Points : 30
    Points
    30
    Par défaut requete insert marche, delete plante . . .
    bonjour,

    je suis en train de dévelloper un programme de gestion de matériel sous access et j'ai un probleme avec une requete SQL qui me fait planter access des que je l'éxecute.

    le contexte: j'ai une table qui contient une liste de matériel (matosActuel), et une table qui contient les nouveaux ajouts, ainsi que des modifications pour la premiere table (matosNew).

    pour mettre a jour matosActuel,

    je transfere l'ensemble de matosNew dans matosActuel, puis je fais une requete pour trouver les doublons, que je sauvegarde dans une table temp. puis je Delete les doublons de matosActuel. et c'est la que ca coince.

    la requete pour trouver les doublons marche nickel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO temp SELECT * FROM matosActuel 
    WHERE (((matosActuel.[Asset Tag]) IN (
    SELECT [Asset Tag] FROM [matosActuel] As Tmp 
    GROUP BY [Asset Tag] HAVING Count(*)>1 ))) 
    ORDER BY matosActuel.[Asset Tag]
    la requete pour Delete, par contre, fait planter Access systematiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DELETE * FROM matosActuel 
    WHERE EXISTS (SELECT * FROM matosActuel 
    WHERE (((matosActuel.[Asset Tag]) IN (
    SELECT [Asset Tag] FROM [matosActuel] As Tmp 
    GROUP BY [Asset Tag] HAVING Count(*)>1 ))) 
    ORDER BY matosActuel.[Asset Tag])
    j'avoue que je suis a court d'idée, des suggestions?

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 081
    Points : 24 726
    Points
    24 726
    Par défaut
    Bonjour,

    Il y a un message d'erreur ou pas ?

    Cordialement,

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2014
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2014
    Messages : 31
    Points : 30
    Points
    30
    Par défaut
    bonjour,
    désolé de ma réponse tardive,

    non, aucun message d'erreur, access rame quelque seconde puis un message windows "access a céssé de fonctionner"

  4. #4
    Membre habitué
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2009
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2009
    Messages : 73
    Points : 160
    Points
    160
    Par défaut
    Salut,
    Je pense que la requête est trop surchargée --> SQL récursif, donc normal que ça plante.
    Il faut la compresser; si tu veux supprimer les doublons dans la table [matosActuel].

    Voici un petit exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DELETE * FROM matosActuel 
    GROUP BY [Asset Tag] 
    HAVING COUNT(*)>1

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 884
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 884
    Points : 58 498
    Points
    58 498
    Billets dans le blog
    45
    Par défaut
    Bonjour,

    Citation Envoyé par repgarent Voir le message
    la requete pour Delete, par contre, fait planter Access systematiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    DELETE * FROM matosActuel 
    WHERE EXISTS (SELECT * FROM matosActuel 
    WHERE (((matosActuel.[Asset Tag]) IN (
    SELECT [Asset Tag] FROM [matosActuel] As Tmp 
    GROUP BY [Asset Tag] HAVING Count(*)>1 ))) 
    ORDER BY matosActuel.[Asset Tag])
    Un essai avec :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DELETE * FROM matosActuel
    WHERE matosActuel.[Asset Tag] IN
    (
     SELECT Tmp.[Asset Tag] FROM [matosActuel] As Tmp 
     GROUP BY Tmp.[Asset Tag]
     HAVING Count(*)>1
    )

    Pas évident que cela marche sous Access.

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/09/2013, 18h09
  2. [MySQL] requete INSERT marche pas
    Par makamine dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/06/2011, 16h18
  3. [SQL] requete INSERT INTO ne marche pas
    Par mimagyc dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 07/08/2007, 12h48
  4. [MySQL] DELETE en cascade..ma requete ne marche pas
    Par debie1108 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 21/10/2006, 17h54
  5. Comment savoir si une requete INSERT INTO a bien marché ?
    Par Whattt dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/06/2006, 09h06

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