MySQL Forums
Forum List  »  French

Re: aide sur requete avec jointures
Posted by: Jean Molliné
Date: August 17, 2010 10:39PM

Normal : regarde tes clés primaire : elles comportent bien les deux colonnes nécessaires, mais tu y as ajouté la clé étrangère dans la composition: c'est ça qui bloque les contraintes. : je viens de tester en local en les retirant et ça fonctionne parfaitement et j'ai pu créer les tables avec leurs contraintes du premier coup. Ton code ajusté donne ceci :
-- mysql> SHOW CREATE TABLE `modules`\G
CREATE TABLE `modules` (
  `idmodule` bigint(20) unsigned NOT NULL auto_increment,
  `nommodule` varchar(45) default NULL,
  PRIMARY KEY  (`idmodule`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- mysql> SHOW CREATE TABLE `chapitres`\G
CREATE TABLE `chapitres` (
  `idchapitre` bigint(20) unsigned NOT NULL auto_increment,
  `idmodule` bigint(20) unsigned default NULL,
  `rankchapitre` int(10) unsigned NOT NULL default '0',
  `nomchapitre` text,
  PRIMARY KEY  (`idchapitre`,`rankchapitre`),
  KEY `idmodule` (`idmodule`),
  KEY `idchapitre` (`idchapitre`),
  KEY `rankchapitre` (`rankchapitre`),
  CONSTRAINT `chapitres_ibfk_1` 
      FOREIGN KEY (`idmodule`) 
      REFERENCES `modules` (`idmodule`) 
      ON DELETE SET NULL 
      ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- mysql> SHOW CREATE TABLE `sequences`\G
CREATE TABLE `sequences` (
  `idsequence` bigint(20) unsigned NOT NULL auto_increment,
  `idchapitre` bigint(20) unsigned default NULL,
  `ranksequence` int(10) unsigned NOT NULL default '0',
  `nomsequence` text,
  PRIMARY KEY  (`idsequence`,`ranksequence`),
  KEY `idchapitre` (`idchapitre`),
  KEY `idsequence` (`idsequence`),
  KEY `ranksequence` (`ranksequence`),
  CONSTRAINT `sequences_ibfk_1` 
      FOREIGN KEY (`idchapitre`) 
      REFERENCES `chapitres` (`idchapitre`) 
      ON DELETE SET NULL 
      ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- mysql> SHOW CREATE TABLE `briques`\G
CREATE TABLE `briques` (
  `idbrique` bigint(20) unsigned NOT NULL auto_increment,
  `idsequence` bigint(20) unsigned default NULL,
  `rankbrique` int(10) unsigned NOT NULL default '0',
  `nombrique` text,
  PRIMARY KEY  (`idbrique`,`rankbrique`),
  KEY `idsequence` (`idsequence`),
  KEY `idbrique` (`idbrique`),
  KEY `rankbrique` (`rankbrique`),
  CONSTRAINT `briques_ibfk_1` 
      FOREIGN KEY (`idsequence`) 
      REFERENCES `sequences` (`idsequence`) 
      ON DELETE SET NULL 
      ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Note : en fait j'ai compris : regarde plus attentivement les croquis que j'ai fait plus tôt : certaines colonnes sont marquées « PK » (primary Key) mais d'autres sont notées « FK » (Foreign Key) et je crois que c'est ce détail que tu n'avais pas relevé qui t'a conduit à les inclure dans la PK.

______________________________________________________________
Une question bien formulée, c'est un problème bien compris : ça représente déjà les 3/4 de la réponse ;)



Edited 1 time(s). Last edit at 08/17/2010 10:42PM by Jean Molliné.

Options: ReplyQuote


Subject
Views
Written By
Posted
5475
August 17, 2010 07:45AM
2960
August 17, 2010 09:25AM
2308
August 17, 2010 09:46AM
2471
August 17, 2010 10:21AM
2201
August 17, 2010 10:32AM
2298
August 17, 2010 11:31AM
2453
August 17, 2010 01:12PM
3629
August 17, 2010 06:28PM
Re: aide sur requete avec jointures
2505
August 17, 2010 10:39PM
2265
August 18, 2010 06:13AM
2365
August 18, 2010 06:59AM
2187
August 18, 2010 10:12AM
2321
August 18, 2010 10:40AM
3589
August 22, 2010 04:07AM
2177
August 31, 2010 03:28AM
2580
August 31, 2010 03:29AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.