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

PHP & Base de données Discussion :

Suppression de doublons


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Par défaut Suppression de doublons
    Bonjour,

    Voici ma table posant souci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE `PANIERS`
    (
    	`CLIENT_IDENTIFIANT` BIGINT(14) NOT NULL, 
    	`PRODUIT_IDENTIFIANT` INT(10) NOT NULL, 
    	`PRODUIT_QUANTITE` INT(3) NOT NULL DEFAULT '1', 
    	`PRODUIT_PRIX` FLOAT(10,2) NOT NULL, 
    	`DATE_INSERTION` DATE NOT NULL, 
    );
    Lorsque le visiteur ajoute des produits dans le panier, j'enregistre les références dans la table, qu'il soit identifié ou pas (via son identifiant ou un n° temporaire).
    Lorsque le visiteur s'identifie, je change l'identifiant temporaire dans la table grace à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE $table_paniers SET $table_paniers.CLIENT_IDENTIFIANT = $client_identifie WHERE $table_paniers.CLIENT_IDENTIFIANT = $client_temp"
    ,
    pour le passer à son identifiant, j'obtiens donc des doublons, si le visiteur avait déjà ajouter cette référence lors d'une connexion précédente.

    J'aimerais pouvoir supprimer ces doublons, en ne conservant que le doublon enregistré le plus récemment.

    Merci.

  2. #2
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    enregistres-tu la date d'insertion dans ta bdd ?
    Si oui, effectue une requête delete avec une condition sur la date.
    Snon, peux être as-tu un identifiant que tu incrémentes à chaque nouvelle insertion ? Si oui, sers toi de cela alors...

  3. #3
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Par défaut
    Oui, j'enregistre automatiquement la date d'insertion dans la BDD en fonction de la date du jour de l'insertion. Non je n'ai pas d'identifiant que j'auto-incrémente.

    J'aimerais avoir une requete du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE from table where PRODUIT_IDENTIFIANT in (select count(*) from table group by PRODUIT_IDENTIFIANT order by PRODUIT_PRIX limit 0, count(*)-1)
    Connaissez-vous une requête valide pour faire cette suppression?

    Merci.

  4. #4
    Membre chevronné
    Profil pro
    Responsable de service informatique
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Par défaut
    T'as un article : ici

  5. #5
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Par défaut
    Merci pour le lien, mais j'avais déjà regardé et essayé les différents morceaux de codes, et j'obtiens des erreurs pour chaque exemple, tout en faisant du copier/coller...

  6. #6
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    Citation Envoyé par kg72 Voir le message
    Oui, j'enregistre automatiquement la date d'insertion dans la BDD en fonction de la date du jour de l'insertion. Non je n'ai pas d'identifiant que j'auto-incrémente.

    J'aimerais avoir une requete du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DELETE from table where PRODUIT_IDENTIFIANT in (select count(*) from table group by PRODUIT_IDENTIFIANT order by PRODUIT_PRIX limit 0, count(*)-1)
    Connaissez-vous une requête valide pour faire cette suppression?

    Merci.
    MySQL ne sait pas exécuter des requêtes imbriquer.
    Tu dois d'abord exècuter ta deuxième select, et inclure le résultat dans la première

  7. #7
    Membre averti
    Inscrit en
    Juillet 2004
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 22
    Par défaut
    Je ne vois pas comment programmer ces requetes pourrais-tu m'expliquer comment faire?

    Merci

  8. #8
    Membre éprouvé
    Avatar de doudoustephane
    Homme Profil pro
    Gérant
    Inscrit en
    Août 2005
    Messages
    1 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 129
    Par défaut
    Citation Envoyé par kg72 Voir le message
    Je ne vois pas comment programmer ces requetes pourrais-tu m'expliquer comment faire?

    Merci
    Et bien, , tu fais ta première requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select count(*) from table group by PRODUIT_IDENTIFIANT order by PRODUIT_PRIX limit 0, count(*)-1
    en php et tu traite les résultats dans une boucle while. Ainsi, pour chaque résultats, tu exécute la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "DELETE from table where PRODUIT_IDENTIFIANT=" . $data["id"]
    pense bien sur à remplacer $data["id"] par tes propres variables.
    Voilà

Discussions similaires

  1. Suppression de doublons et insertion
    Par Samish dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/08/2005, 21h57
  2. Réponses: 17
    Dernier message: 03/12/2004, 11h17
  3. [langage] Suppression de doublon dans tableau
    Par LFC dans le forum Langage
    Réponses: 5
    Dernier message: 15/04/2004, 14h08
  4. Requête de suppression de doublons : besoin d'aide
    Par biocorp dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2004, 17h04
  5. [LG]Suppression de doublons
    Par moustique31 dans le forum Langage
    Réponses: 5
    Dernier message: 20/12/2003, 21h03

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