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

SQL Oracle Discussion :

Comment récupérer une liste d'attributs en respectant tous les mêmes conditions


Sujet :

SQL Oracle

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Comment récupérer une liste d'attributs en respectant tous les mêmes conditions
    Bonjour à tous, j'viens de passer 1h sur la tentative de création d'une requête

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    create table Livre (
    numero_b char not null,
    title char not null,
    price char not null CHECK (price > 0),
    type ENUM ( 'dict', 'poe', 'novel',  'tb' ) not null,
    year char not null DEFAULT '(SELECT add_months(SYSDATE, 12) FROM DUAL;)',
    Editor char not null,
     constraint ID_Livre primary key (numero_b));
     
    create table Abonne (   
    numero_abo char not null,
    name char not null,
    surname char not null,
    status char ,
    street char not null,
    town char not null,
    constraint ID_abo primary key (numero_abo));
     
    create table Auteur (
    numero char not null,
    writer char,
    CONSTRAINT book FOREIGN KEY ( numero ) REFERENCES  Livre ( numero_b),
    constraint ID_writer primary key (numero, writer));
     
    create table Emprunt (
    numero_ex char not null,
    numero_book char not null,
    numero_abo char,
    return_date char DEFAULT ( CASE Abonne.statut
    WHEN 'VIP' THEN ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE, 24) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
      WHEN 'TEACHER' THEN ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE, 12) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
      WHEN 'STUDENT' THEN ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE, 6) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
    WHEN 'RETURNING' THEN ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE, 3) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
    Else ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE,1) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
    END ),
    CONSTRAINT ID_emprunt  PRIMARY KEY ( numero_ex, numero_b, numero_abo  ),
    CONSTRAINT exemplaire FOREIGN KEY ( numero_ex ) REFERENCES  Exemplaire ( numero_ex);
    CONSTRAINT abonne FOREIGN KEY ( numero_abo ) REFERENCES  Abonne ( numero_abo);
     
     
    create table Exemplaire (
    numero char not null,
    numero_ex char not null,
    CONSTRAINT book FOREIGN KEY ( numero ) REFERENCES  Livre ( numero_b),
    CONSTRAINT ID_Exemplaire PRIMARY KEY (Num_Ex, Numero));
     
     
    CREATE SEQUENCE seq_book;
    CREATE SEQUENCE seq_abo;
    CREATE SEQUENCE seq_ex ;
     
     
     
    CREATE OR REPLACE TRIGGER trig_book
    BEFORE INSERT ON Livre FOR EACH ROW
    BEGIN
      SELECT seq_book.NEXTVAL
      INTO :NEW.numero_b
      FROM DUAL;
    END;
     
    CREATE OR REPLACE TRIGGER trig_abo
    BEFORE INSERT ON Abonne FOR EACH ROW
    BEGIN
      SELECT seq_abo.NEXTVAL
      INTO :NEW.numero_abo
      FROM DUAL;
    END;
     
    CREATE OR REPLACE TRIGGER trig_ex
    BEFORE INSERT ON Exemplaire FOR EACH ROW
    BEGIN
      SELECT seq_ex.NEXTVAL
      INTO :NEW.numero_ex
      FROM DUAL;
    END;
    Donc ci dessus c'est ma base de donnée il faut juste rajouté une colonne prix dans la table livre et c'est la copie conforme.
    Et maintenant la requete que j'ai essayé de faire : j'voudrais récupérer l'ensemble des éditeurs dont le prix des livres est supérieur a 100.


    Merci d'avance pour l'aide qu'on pourrais m'apporter.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    qu'entendez-vous par "le prix des livres" ?
    Est-ce au moins un livre ou est-ce tous les livres de cet éditeur ?

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Non, non c'est bien le prix de tous les livres de l'éditeur qui respecter la condition pour que le nom de l'editeur soit renvoyé.

  4. #4
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    La table Emprunt ne doit pas être créée, parce que mettre des updates dans un DEFAULT d'une colonne, c'est pas trop normal. Ensuite référencer une autre table (Abonne.statut), encore moins.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    return_date char DEFAULT ( CASE Abonne.statut
    WHEN 'VIP' THEN ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE, 24) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
      WHEN 'TEACHER' THEN ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE, 12) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
      WHEN 'STUDENT' THEN ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE, 6) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
    WHEN 'RETURNING' THEN ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE, 3) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
    Else ( UPDATE Emprunt SET return_date=(SELECT add_months(SYSDATE,1) FROM DUAL ;) WHERE Abonne.Numero=Emprunt.Numeroabo )
    END ),
    La table Livre, pareil.

    Avant de t'aider à créer une requête, passe déjà la création des tables

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Avril 2012
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2012
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Bon eh bien dans ce cas ça me rajoute 1 problème, j'pourrais avoir une piste pour partir parece que je ne vois absolument pas comment changer la date de retour en fonction du statut autrement que comme je l'ai fais là.

    Merci d'avance

  6. #6
    Membre chevronné
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Points : 1 878
    Points
    1 878
    Par défaut
    Un Trigger fera parfaitement l'affaire

Discussions similaires

  1. Récupérer une liste d'attribut-MongoDB
    Par fats1 dans le forum NoSQL
    Réponses: 4
    Dernier message: 19/07/2013, 10h31
  2. Comment récupérer une liste avec une relation one to many ?
    Par tomlaurent dans le forum Hibernate
    Réponses: 1
    Dernier message: 07/11/2011, 07h16
  3. Réponses: 2
    Dernier message: 19/06/2009, 14h37
  4. Comment récupérer une liste de checkbox
    Par guillaume06 dans le forum Struts 1
    Réponses: 7
    Dernier message: 28/02/2008, 19h25
  5. Réponses: 2
    Dernier message: 30/08/2007, 09h12

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