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
5348
August 17, 2010 07:45AM
2932
August 17, 2010 09:25AM
2274
August 17, 2010 09:46AM
2439
August 17, 2010 10:21AM
2162
August 17, 2010 10:32AM
2255
August 17, 2010 11:31AM
2414
August 17, 2010 01:12PM
3589
August 17, 2010 06:28PM
Re: aide sur requete avec jointures
2446
August 17, 2010 10:39PM
2223
August 18, 2010 06:13AM
2324
August 18, 2010 06:59AM
2143
August 18, 2010 10:12AM
2265
August 18, 2010 10:40AM
3565
August 22, 2010 04:07AM
2138
August 31, 2010 03:28AM
2546
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.