Problème foreign key sql
hiro24
Messages postés
257
Statut
Membre
-
Marco la baraque Messages postés 1030 Statut Contributeur -
Marco la baraque Messages postés 1030 Statut Contributeur -
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
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:
- Problème foreign key sql
- Key windows 10 - Guide
- Wic reset key 16 characters free ✓ - Forum Imprimante
- Press the esc key for startup menu - Forum Matériel & Système
- Volume down key + power key for more than 7 secs traduction - Forum Samsung
- Word key - Télécharger - Sécurité
2 réponses
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;
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;
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.
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.