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 PostgreSQL Discussion :

Supprimer des lignes de la table


Sujet :

Requêtes PostgreSQL

  1. #1
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2012
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Supprimer des lignes de la table
    Bonsoir;
    j'i une table qui contient les colonnes suivantes:
    sessions, heure, url

    je veux créer une nouvelle table qui contient les même colonnes mais avec une condition:
    supprimer les lignes avec le nombre de sessions < 2
    sessions heure url
    s1 23 u1
    s1 45 u2
    s2 12 u3
    s3 34 u1
    s3 23 u3
    s3 7 u4
    s4 12 u5

    par exemple:
    le nombre d'apparition de la session s1=2
    le nombre d'apparition de la session s2=1
    le nombre d'apparition de la session s3=3
    le nombre d'apparition de la session s4=1

    dans ce cas la, supprimer les deux sessions s2 et s4 de la table
    le résultat devient:
    sessions heure url
    s1 23 u1
    s1 45 u2
    s3 34 u1
    s3 23 u3
    s3 7 u4

  2. #2
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    janvier 2013
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : janvier 2013
    Messages : 340
    Points : 1 004
    Points
    1 004
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    create table b as table a;
    delete from b where sessions in
        (select sessions from b group by sessions having count(url)<2)
    P.S. pourquoi vouloir créer un nouvelle table, tu es sûre que tu ne veux pas plutôt une vue?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    test=> create or replace view v as
        (select * from a where sessions in
            (select sessions from a group by sessions having count(url)>=2));
    CREATE VIEW
    test=> select * from v;
     sessions |  heure   | url 
    ----------+----------+-----
     s1       | 00:00:00 | u1
     s1       | 00:00:00 | u2
     s3       | 00:00:00 | u1
     s3       | 00:00:00 | u3
     s3       | 00:00:00 | u4

  3. #3
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2012
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Bonjour MaximeCh et merci pour votre réponse,
    en utilisant une vue j'ai eu le résultat recherché,
    si vous permettez, j'ai quelles que questions à vous posez,
    quelle est la différence entre une requête normale et une vue?
    pourquoi vous avez pensez à créer une vue au lieu de la création d'une nouvelle table?

  4. #4
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    janvier 2013
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : janvier 2013
    Messages : 340
    Points : 1 004
    Points
    1 004
    Par défaut
    Une vue fait une requête, c'est une requête nommée en quelque sorte, qu'on peut par la suite appeler plus facilement.

    J'y ai pensé parce que créer une nouvelle table ça consomme plus d'espace disque que de créer une vue.
    Et une vue est adaptée à votre cas ou vous ne faites que filtrer des données d'une table.

  5. #5
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2012
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    merci MaximeCh pour votre aide

  6. #6
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2012
    Messages : 26
    Points : 18
    Points
    18
    Par défaut exporter la vue sous csv
    Bonsoir;
    je veux exporter la vue v créer a partir de la première table mais j'ai pas réussi à le faire ,
    si vous pouvez m'aider

  7. #7
    Membre éprouvé

    Homme Profil pro
    Consultant ERP
    Inscrit en
    janvier 2013
    Messages
    340
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : Conseil

    Informations forums :
    Inscription : janvier 2013
    Messages : 340
    Points : 1 004
    Points
    1 004
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    psql=> \copy (select * from v) to 'vue.csv' with csv

  8. #8
    Expert éminent sénior

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    5 432
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : mars 2010
    Messages : 5 432
    Points : 16 401
    Points
    16 401
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par MaximeCh Voir le message
    Une vue fait une requête, c'est une requête nommée en quelque sorte, qu'on peut par la suite appeler plus facilement.

    J'y ai pensé parce que créer une nouvelle table ça consomme plus d'espace disque que de créer une vue.
    Et une vue est adaptée à votre cas ou vous ne faites que filtrer des données d'une table.
    Une vue c'est effectivement une requête, elle peut concerner une ou plusieurs tables.
    Le problème avec une autre table n'est pas tant de consommer de l'espace disque mais surtout de créer une redondance d'informations avec tous les risques que cela comporte.

    Par ailleurs, le but principal d'une vue est de garantir l'indépendance des données et des traitements. Un traitement ne devrait jamais accéder directement aux tables, mais toujours aux vues.

    Pour garantir cette indépendance, il ne faut jamais coder une requête SELECT * dans une vue (pas plus que dans une table d'ailleurs), mais bien citer une par une chacune des colonnes requises, sinon, la moindre modification de la structure d'une des tables impactera le résultat de la requête de la vue, or c'est le contraire du but recherché.

  9. #9
    Membre à l'essai
    Femme Profil pro
    Enseignant
    Inscrit en
    août 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2012
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Bonjour MaximeCh;
    afin d’exécuter la requête suivante:
    psql=> \copy (select * from v) to 'vue.csv' with csv
    il faut dans ce cas la créer un nouveau fichier excel nommé vue.csv pour que l’exécution de la requête enregistre la table v dans le fichier vue.csv

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

Discussions similaires

  1. supprimer des lignes dans une table SAS
    Par yoyo44ima dans le forum SAS Base
    Réponses: 7
    Dernier message: 25/05/2011, 10h39
  2. supprimer des lignes d'une table
    Par Papy214 dans le forum jQuery
    Réponses: 3
    Dernier message: 31/08/2010, 15h48
  3. Supprimer des lignes dans une table
    Par ToniConti dans le forum Pentaho
    Réponses: 5
    Dernier message: 04/08/2010, 00h09
  4. ajouter supprimer des lignes en utilisant TABLE de ADF
    Par mans27 dans le forum JDeveloper
    Réponses: 6
    Dernier message: 15/06/2007, 12h43
  5. [VBA] Supprimer des lignes dans une table
    Par shadockgreg dans le forum Access
    Réponses: 6
    Dernier message: 22/11/2006, 10h58

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