Problème foreign key sql

Fermé
hiro24 Messages postés 238 Date d'inscription dimanche 18 mai 2008 Statut Membre Dernière intervention 20 octobre 2018 - 29 juil. 2008 à 17:00
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 29 juil. 2008 à 23:23
Bonjour,

Voila mon problème :

Je travaille sous phpmyadmin.
Je veux créer 2 tables Departement et Technicien avec les champs suivants :

Departement : Id, Nom_dept, Num_dept
Clé primaire : Id

Technicien : Id, Nom_tech, Prenom_tech, Num_tech, Id_dept
Clé primaire : Id
Clé étrangère : Id_dept

Voici le code sql que j'ai écrit :

create table Departement(
Id Int AUTO_INCREMENT,
Nom_dept VARCHAR(30) NOT NULL,
Num_dept VARCHAR(10) NOT NULL,
PRIMARY KEY(Id_dept)
)ENGINE=INNODB;


Create table Technicien(
Id Int AUTO_INCREMENT,
Nom_tech varchar(50) NOT NULL,
Prenom_tech varchar(50) NOT NULL,
Num_tech INT NOT NULL,
Id_dept INT NOT NULL,
CONSTRAINT PK_Tech PRIMARY KEY (Id),
CONSTRAINT FK_Dept FOREIGN KEY (Id_dept) REFERENCES Departement(Id) on delete cascade
)ENGINE=INNODB;

Le problème est que lorsque je fais une requête pour obtenir numéro de département (num_dept) en fonction du nom du technicien (nom_tech), il me sort tous les numéros de département de la base au lieu de celui concerné.

Req : SELECT num_dept FROM technicien, departement WHERE Prenom_tech LIKE 'Ludovic'
La il me sort tous les num_dept de la base...bizarre

Je pense que c'est un problème de clé étrangère mais je n'arrive pas à corriger le problème.

Merci d'avance de votre aide
A voir également:

2 réponses

cchristian Messages postés 921 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 6 mars 2012 131
29 juil. 2008 à 17:29
Bonjour,
CA je ne connais pas ! Sérieux c'est possible ?

create table Departement(
Id Int AUTO_INCREMENT,
Nom_dept VARCHAR(30) NOT NULL,
Num_dept VARCHAR(10) NOT NULL,
PRIMARY KEY(Id_dept)
)ENGINE=INNODB;

1
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 329
29 juil. 2008 à 23:23
Bonsoir,

Req : SELECT num_dept FROM technicien, departement WHERE Prenom_tech LIKE 'Ludovic'
La il me sort tous les num_dept de la base...bizarre


Pourquoi tu spécifies la table departement dans ta requête alors que tu n'en as pas besoin?
SELECT num_dept FROM technicien WHERE Prenom_tech LIKE 'Ludovic'
Ca te retourne pas ce que tu souhaites ça?

Ceci mis à part, c'est curieux que tu n'aies pas d'erreur lors de la création de tes tables, puisque pour créer tes foreign key constraints, tu dois normalement spécifier un index sur les colonnes des deux tables :
http://dev.mysql.com/doc/refman/5.0/fr/innodb-foreign-key-constraints.html

Cordialement.
1