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

Langage SQL Discussion :

Débutant qui a besoin d'aide


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Débutant qui a besoin d'aide
    Bonjour,


    Voilà j'ai un devoir maison à faire ( je suis censé être en duo mais finalement je me suis retrouvé seul ) mais c'est la premiere fois que je fais du SQL , j'utilise APEX d'Oracle.

    Donc basiquement j'essaie de faire tourner mon programme SQL qui est le suivant :

    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 Piece(
        num_piece number(2) primary key,
        denomination varchar2(50) not null,
        surface number(2) not null
        );
     
     
    create table Emplacement(
        num_emplacement number(2) primary key,
        denomination_emplacement varchar2(50) not null,
        CONSTRAINT num_piece_emplacement FOREIGN KEY (num_piece) REFERENCES Piece(num_piece)
        );
     
    create table Capteur(
        num_capteur number(2) primary key,
        nature varchar2(20) not null,
        unite_mesure varchar2(10) not null,
        CONSTRAINT code_tele_capteur FOREIGN KEY (code_tele) REFERENCES Telecommande(code_tele)
        );
     
     
    create table Mesure(
        minute_mesure number(2) ,
        date_mesure date not null,
        heure number(2),
        valeur float,
        CONSTRAINT num_capteur_mesure FOREIGN KEY (num_capteur) REFERENCES Capteur(num_capteur)
        );
     
    create table Etatcapt(
        etat varchar2(1) CHECK (etat IN('M','A')) not null, -- M pour Marche et A pour Arret
        heure number(2) not null,
        minute_check_etat number(2) not null,
        date_check_etat date,
        CONSTRAINT num_capteur_check FOREIGN KEY (num_capteur) REFERENCES Capteur(num_capteur)
        );
     
    create table Telecommande(
        code_tele number(2) primary key,
        num_capteur_teleco number(2) not null,
        modele varchar2(10)not null,
        date_achat date,
        CONSTRAINT num_capteur_teleco FOREIGN KEY (num_capteur) REFERENCES Capteur(num_capteur)
        );
     
    create table Telecommande_fixe(
        CONSTRAINT code_tele_fixe FOREIGN KEY (code_tele) REFERENCES Telecommande(code_tele,
        CONSTRAINT num_piece FOREIGN KEY (num_piece) REFERENCES Piece(num_piece),
        CONSTRAINT num_empla_tele_fixe FOREIGN KEY (num_emplacement) REFERENCES Emplacement(num_emplacement),
        PRIMARY KEY (code_tele_fixe)
        );
     
     
    create table Temp_ideale(
        heure_deb number(2)not null,
        minute_deb number(2)not null,
        jour_deb varchar2(8) CHECK (jour_deb IN('Lundi', 'Mardi','Mercredi','Jeudi','Samedi','Dimanche')),
        heure_fin number(2)not null, 
        minute_fin number(2)not null,
        jour_fin varchar2(8)CHECK (jour_fin IN('Lundi', 'Mardi','Mercredi','Jeudi','Samedi','Dimanche')),
        temperature_ideale number(2) not null,
        CONSTRAINT num_piece_temp FOREIGN KEY (num_piece) REFERENCES Piece(num_piece,
        PRIMARY KEY (num_piece_temp)
        );
     
    create table Eclairage_auto(    
        jour_deb varchar2(8) CHECK (jour_deb IN('Lundi', 'Mardi','Mercredi','Jeudi','Samedi','Dimanche')),
        jour_fin varchar2(8) CHECK (jour_deb IN('Lundi', 'Mardi','Mercredi','Jeudi','Samedi','Dimanche')),
        heure_deb number(2)not null,
        heure_fin number(2)not null,
        minute_deb number(2)not null,
        minute_fin number(2)not null,
        etat_eclairage varchar(1) CHECK (etat_eclairage IN('M','A')),
        CONSTRAINT num_piece_eclai FOREIGN KEY (num_piece) REFERENCES Piece(num_piece),
        PRIMARY KEY (num_piece_eclai)
        );



    Voici les erreurs :

    Number


    Elapsed Statement Feedback Rows
    1 0.02 create table Piece( num_piece number(2) primary key, ORA-00955: name is already used by an existing object -
    2 0.00 create table Emplacement( num_emplacement number(2) prim ORA-00904: "NUM_PIECE": invalid identifier -
    3 0.00 create table Capteur( num_capteur number(2) primary key, ORA-00904: "CODE_TELE": invalid identifier -
    4 0.00 create table Mesure( minute_mesure number(2) , date_ ORA-00904: "NUM_CAPTEUR": invalid identifier -
    5 0.00 create table Etatcapt( etat varchar2(1) CHECK (etat IN(' ORA-00904: "NUM_CAPTEUR": invalid identifier -
    6 0.01 create table Telecommande( code_tele number(2) primary k ORA-00904: "NUM_CAPTEUR": invalid identifier -
    7 0.01 create table Telecommande_fixe( CONSTRAINT code_tele_fix ORA-00907: missing right parenthesis -
    8 0.00 create table Temp_ideale( heure_deb number(2)not null, ORA-00907: missing right parenthesis -
    9 0.00 create table Eclairage_auto( jour_deb varchar2(8) CH ORA-02438: Column check constraint cannot reference other columns



    Je ne comprends vraiment pas ces erreurs .. J'essaie d'arranger mais ca a l'air d'empirer à chaque fois. Merci de ne pas être trop dur avec un first-timer !

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    DROP les tables avant de les recréer : tu as une table "piece" déjà existante (d'où la première erreur) qui ne contient pas de colonne "num_piece" (d'où la seconde erreur). Et après, c'est de la cascade, aucune autre table ne se crée puisque les tables référencées n'existent pas.

    Sinon, les missing right parenthesis, le message d'erreur va de soit, et effectivement, il t'en manque 3.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci de ta réponse rapide,


    Donc avant de créer une table, disons une table X, je dois faire drop table X ?

    J'ai d'autres questions si ca ne vous derange pas :

    - J'ai toujours cru que l'on pouvait avoir plusieurs clef primaire par table, mais Oracle semble ne pas vouloir, est-ce normal ?

    - Je ne comprends pas la difference entre déclarer une clef étrangère avec " FOREIGN KEY xxxxxxx REFERENCES xxxx " et " CONSTRAINT xxxxxx FOREIGN KEY xxxxx REFERENCES xxxxx" si vous pouviez m'expliquer s'il vous plait.

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 154
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Si elle n'existe pas, non.
    Mais vu qu'elle existe, oui, tu peux pas créer une table si elle existe déjà.

    Et là t'as dû faire des tests avant, et t'as donc une table existante.

    A moins que piece soit un mot-clé réservé d'Oracle, ce qui n'est pas impossible.
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Bizarre, maintenant j'ai l'erreur suivante :

    ORA-00904: "NUM_PIECE": invalid identifier
    ORA-00904: "CODE_TELE": invalid identifier
    ORA-00904: : invalid identifier




    Est-ce que j'ai fais une erreur quand je déclare mes clef étrangère ?


    EDIT :

    J'ai trouvé la réponse, mais maintenant d'autres erreurs je vais devenir fou !

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2014
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Voilà j'ai enfin réussi à régler toutes ces erreurs, il ne me reste plus qu'un problème avec une table, je remets mon code :

    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
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    drop table Emplacement;
    drop table Mesure;
    drop table Telecommande;
    drop table Etatcapt;
    drop table Temp_ideale;
    drop table Eclairage_auto;
    drop table Piece;
    drop table Telecommande_fixe;
    drop table Capteur;
     
     
    create table Piece(
        num_piece number(2) primary key,
        denomination varchar2(50) not null,
        surface number(2) not null
        );
     
     
    create table Emplacement(
        num_emplacement number(2) primary key,
        denomination_emplacement varchar2(50) not null,
        num_piece_emplacement number(2) not null  REFERENCES Piece(num_piece)
        );
     
    create table Capteur(
        num_capteur number(2) primary key,
        nature varchar2(20) not null,
        unite_mesure varchar2(10) not null
        );
     
     
    create table Mesure(
        minute_mesure number(2) ,
        date_mesure date not null,
        heure number(2),
        valeur float,
        num_capteur_mesure REFERENCES Capteur(num_capteur),
        PRIMARY KEY (num_capteur_mesure, minute_mesure)
        );
     
    create table Etatcapt(
        etat varchar2(1) CHECK (etat IN('M','A')) not null, -- M pour Marche et A pour Arret
        heure number(2) not null,
        minute_check_etat number(2) not null,
        date_check_etat date,
         num_capteur_check  REFERENCES Capteur(num_capteur)
        );
     
    create table Telecommande(
        code_tele number(2),
        num_capteur_teleco number(2) not null,
        modele varchar2(10)not null,
        date_achat date,
        num_capteur_tele number(2) REFERENCES Capteur(num_capteur)  
        );
     
    create table Telecommande_fixe(
        code_tele_fixe number(2) REFERENCES Telecommande(code_tele),
        num_piece number(2) REFERENCES Piece(num_piece),
        num_empla_tele_fixe number(2) REFERENCES Emplacement(num_emplacement),
        PRIMARY KEY (code_tele_fixe)
        );
     
     
    create table Temp_ideale(
        heure_deb number(2)not null,
        minute_deb number(2)not null,
        jour_deb varchar2(8) CHECK (jour_deb IN('Lundi', 'Mardi','Mercredi','Jeudi','Samedi','Dimanche')),
        heure_fin number(2)not null, 
        minute_fin number(2)not null,
        jour_fin varchar2(8)CHECK (jour_fin IN('Lundi', 'Mardi','Mercredi','Jeudi','Samedi','Dimanche')),
        temperature_ideale number(2) not null,
        num_piece_temp number(2) REFERENCES Piece(num_piece),
        PRIMARY KEY (num_piece_temp)
        );
     
    create table Eclairage_auto(    
        jour_deb varchar2(8) CHECK (jour_deb IN('Lundi', 'Mardi','Mercredi','Jeudi','Samedi','Dimanche')),
        jour_fin varchar2(8) CHECK (jour_fin IN('Lundi', 'Mardi','Mercredi','Jeudi','Samedi','Dimanche')),
        heure_deb number(2)not null,
        heure_fin number(2)not null,
        minute_deb number(2)not null,
        minute_fin number(2)not null,
        etat_eclairage varchar(1) CHECK (etat_eclairage IN('M','A')),
        num_piece_eclai number (2) REFERENCES Piece(num_piece),
        PRIMARY KEY (num_piece_eclai)
        );


    Le problème se trouve avec la table Telecommande_fixe, elle ne contient que des foreign key et pour une certaine raison, elle ne veut pas drop table, j'ai toujours l'erreur
    8 0.00 drop table Telecommande_fixe ORA-00942: table or view does not exist
    Alors que je la mets à drop après toutes les tables à laquelle elle fait référrence ( càd Piece, Telecommande, Emplacement ).

    Je ne comprends pas ... Merci de m'aider !

  7. #7
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par GhostBuster Voir le message
    - J'ai toujours cru que l'on pouvait avoir plusieurs clef primaire par table, mais Oracle semble ne pas vouloir, est-ce normal ?
    Non, vous ne pouvez avoir qu'une seule clef primaire par table.
    En revanche, vous pouvez declarer des contraintes d'unicités supplémentaire, qui deviendront alors des clefs alternatives.

    Citation Envoyé par GhostBuster Voir le message
    - Je ne comprends pas la difference entre déclarer une clef étrangère avec " FOREIGN KEY xxxxxxx REFERENCES xxxx " et " CONSTRAINT xxxxxx FOREIGN KEY xxxxx REFERENCES xxxxx" si vous pouviez m'expliquer s'il vous plait.
    Avec la deuxième syntaxe, vous nommez explicitement la contrainte, alors qu'avec la première, le système attribuera lui-même un nom à la contrainte.

  8. #8
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 801
    Points
    30 801
    Par défaut
    Citation Envoyé par GhostBuster Voir le message
    - J'ai toujours cru que l'on pouvait avoir plusieurs clef primaire par table, mais Oracle semble ne pas vouloir, est-ce normal ?
    Il ne peut y avoir qu'une clé primaire par table... mais cette clé primaire peut être composée de plusieurs colonnes. C'est peut-être cela que tu souhaites...
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  9. #9
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Citation Envoyé par GhostBuster Voir le message
    Le problème se trouve avec la table Telecommande_fixe, elle ne contient que des foreign key et pour une certaine raison, elle ne veut pas drop table, j'ai toujours l'erreur


    Alors que je la mets à drop après toutes les tables à laquelle elle fait référrence ( càd Piece, Telecommande, Emplacement ).

    Je ne comprends pas ... Merci de m'aider !
    Si elle référence d'autres tables, elle devrait être supprimées au début, et non à la fin...
    Mais votre message d'erreur aurait alors porté sur les autres tables (celles qui sont référencées) car il aurait été impossible de les supprimer.

    Votre message d'erreur est clair : il ne peut pas supprimer cette table, tout simplement parce qu'elle n'existe pas !

Discussions similaires

  1. Débutant en Cobol qui a besoin d'aide
    Par Jddoyon dans le forum Cobol
    Réponses: 1
    Dernier message: 07/04/2015, 01h09
  2. Un nouveau qui a besoin d'aide sur MATLAB
    Par bf491499 dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/02/2007, 16h10
  3. Encore un noob qui a besoin d'aide pour les formules
    Par efk pharos dans le forum Formules
    Réponses: 5
    Dernier message: 17/01/2007, 01h46
  4. Débutant C++.net Besoins d'aide !!!
    Par Dlyan dans le forum MFC
    Réponses: 45
    Dernier message: 24/02/2006, 17h15
  5. Débutant qui a besoin d'aide
    Par BerneyBoy dans le forum Langage
    Réponses: 1
    Dernier message: 14/01/2006, 21h33

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