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
5537
August 17, 2010 07:45AM
2984
August 17, 2010 09:25AM
2339
August 17, 2010 09:46AM
2502
August 17, 2010 10:21AM
2226
August 17, 2010 10:32AM
2335
August 17, 2010 11:31AM
2484
August 17, 2010 01:12PM
3658
August 17, 2010 06:28PM
Re: aide sur requete avec jointures
2539
August 17, 2010 10:39PM
2302
August 18, 2010 06:13AM
2399
August 18, 2010 06:59AM
2230
August 18, 2010 10:12AM
2362
August 18, 2010 10:40AM
3623
August 22, 2010 04:07AM
2209
August 31, 2010 03:28AM
2623
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.