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 :

[SQL Server] création de clé étrangere impossible...et pbl sur une requete


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 125
    Points : 52
    Points
    52
    Par défaut [SQL Server] création de clé étrangere impossible...et pbl sur une requete
    Bonjour,

    je n'arrive pas a insérer une cle etrangere dans ma table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    create table [collection](
        [collection_id] int identity(1,1),
        [name_collection] varchar (30) not null
    )
    CREATE TABLE [command] (
        [ref_command] [int] IDENTITY (1, 1) NOT NULL ,
        [command_id] int not null,
        [command_date] smalldatetime,
        [collection_id] [int] foreign key references [collection] ([collection_id])
    )
    L'erreur me dit :

    Aucune cle primaire ou prototype dans la table reference 'collection' ne correspond a la liste des collonnes de reference de la cle etrangere 'FK_command__collect__4d5f7d71'
    Aurais-je oublier quelquechose?Le vérificateur de syntaxe dit qu'il y a aucune erreur...

    Notes :J'utilise DBAMGR2K pour attaquer ma base.

    Merci pour votre aide,

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Avant de créer ta FK, il faudrait que ton champ collection_id soit la PK de la table collection.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 125
    Points : 52
    Points
    52
    Par défaut
    Bonjour,

    Effectivement j'ai oublié ca sur les 2 tables.

    Merci,

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 125
    Points : 52
    Points
    52
    Par défaut
    re

    Alors je continue sur mon developpement et la j'essaie de faire une requete suivant le name_collection et il me dit qu'il y a une erreur de syntaxe sur "where"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    insert into collection (name_collection) 
    values ('Mars') ' donc collection_id vaut 1 vu que c'est la 1ere enregistrement
     
    insert into command (command_id,command_date,collection_id)
    values (1,'01/05/2006',1) 
     
    insert into command (command_id,command_date,collection_id)
    values (2,'01/05/2006',1)
     
    select distinct command_id,command_date 
    from command natural join collection 
    where collection.name_collection like '%Mars%'
    La j'avoue suis dans les choux

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 125
    Points : 52
    Points
    52
    Par défaut
    re

    j'ai trouve une parade a ce probleme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT distinct command_id,command_date,user_country 
    FROM [dbo].[command] c join [collection] co on c.collection_id = co.collection_id 
    where  co.name_collection like '%Mars%'
    Si le natural join ne marche pas, je vois pas pourquoi je mets des FK...

    Si quelqu'un sait pourquoi j'aimerai le savoir merci,

    Je laisse volontairement en non resolu.

  6. #6
    Membre régulier
    Inscrit en
    Décembre 2004
    Messages
    150
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 150
    Points : 121
    Points
    121
    Par défaut
    Pour moi les FK sont là pour que les tables de ta base de données aient des liens entre elles ce qui rend plus facile pour quelqu'un de regarder la base de données et de s'y retrouver...

    J'étais dans un stage avant où il n'y avait pas du tout de FK et je dois avouer que l'on s'y perd très rapidement.

  7. #7
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par shinrei
    Si le natural join ne marche pas, je vois pas pourquoi je mets des FK...
    Comme Nadine l'a dit, les FK ne servent pas à faire des "Natural Join" mais bien à préserver l'intégrité de tes données !

    Citation Envoyé par shinrei
    Si quelqu'un sait pourquoi j'aimerai le savoir merci,
    cf http://sql.developpez.com/sqlaz/jointures/
    et plus particulièrement : http://sql.developpez.com/sqlaz/jointures/#L2.1
    Mais cette syntaxe est rarement acceptée par les moteurs SQL actuels !
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    125
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 125
    Points : 52
    Points
    52
    Par défaut
    Comme Nadine l'a dit, les FK ne servent pas à faire des "Natural Join" mais bien à préserver l'intégrité de tes données !
    Oui bien sur, dans ce cas la on utilise aisément natural join pour relier les 2 tables mais la je n'y arrive pas...

    Mais cette syntaxe est rarement acceptée par les moteurs SQL actuels !
    Je croyais que cet synthaxe passait partout...mon prof m'aurait menti?

Discussions similaires

  1. [Sql server mobile 5.0] TOP impossible
    Par pdesoil dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/05/2007, 10h54
  2. Réponses: 5
    Dernier message: 06/02/2007, 13h46
  3. [vb.net] [sql server] Création de BDD ...
    Par basnifo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 10/05/2006, 12h14
  4. [SQL SERVER]Création table de Login avec création mot pass
    Par MatthieuQ dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2006, 12h07
  5. [Sql Server CE 2.0] Acces impossible depuis Pocket PC
    Par joefou dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 02/09/2005, 14h24

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