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
5317
August 17, 2010 07:45AM
2911
August 17, 2010 09:25AM
2257
August 17, 2010 09:46AM
2418
August 17, 2010 10:21AM
2148
August 17, 2010 10:32AM
2238
August 17, 2010 11:31AM
2396
August 17, 2010 01:12PM
3568
August 17, 2010 06:28PM
Re: aide sur requete avec jointures
2430
August 17, 2010 10:39PM
2211
August 18, 2010 06:13AM
2308
August 18, 2010 06:59AM
2128
August 18, 2010 10:12AM
2246
August 18, 2010 10:40AM
3542
August 22, 2010 04:07AM
2120
August 31, 2010 03:28AM
2527
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.