query complessa

Ciao ragazzi, sto impazzendo a capire come fare una SOLA query ma non ci riesco..

cercherò di essere più chiara possibile con un esempio simile:

la casa Walt Disney fa diversi giornalini Topolino, Paperino, ognuno ha come "sede" Topolinea, Paperopoli ,

con all'interno vari personaggi... Zio paperone, paperino, paperina. Ogni Personaggio ha una vita e dei nipoti.

le tabelle sono:

1) Giornalini (topolino, paperino)

2) Sede (topolinea, paperopoli)

3) Personaggi (Paperone, paperino, archimede)

4) Abitazioni (Deposito, casetta, laboratorio)

La query dovrebbe essere fatta dalla tabella personaggi... mi spiego:  arrivata al personaggio, se scelgo Paperone dovrebbe recuperare i dati relativi alla sede dove si trova (Paperopoli) e su quale giornalino (Paperino)  viene raccontato, dovrebbe recuperare, e qui non so come, l'abitazione (Deposito) corrispondente con le varie informazioni che ci sono (via, dollari, ecc.).

Ovviamente se scelgo Paperiono avrei:

1) Paperino (giornalino)

2) Paperopoli

3) Paperino

4) Casetta (Nomi nipoti, via, squattrinato, jellato, ecc.)

le prime tre tabelle sono Padre figlio, quando poi sono nella tabella Personaggi dovrei avere X tabelle collegate... dove X rappresenta l'abitazione dove si svolgono le avventure con dentro varie informazioni.

Perdonatemi se non sn stata chiara... L.

inviato 5 anni fa
lorymacri
X 0 X

Ciao lorymacri,

per aiutarti nella creazione di una sola query per estrarre i dati che ti servono potresti scrivere la struttura delle tabelle e le varie relazioni che ci sono?

Dalla tua descrizione mi pare di capire che la tabella "Abitazioni" non ha nessuna chiave per recuperare in maniera univoca il valore "Casetta". Giusto?

Ciao

Zeta

risposto 5 anni fa
zeta80
X 0 X

Ciao Zeta,

posto una struttura simile.. a quella che ho descritto... 

le tabelle collegate ai personaggi possono essere N, tutto varia in funzione di cosa si sceglie... se scelgo Paperone avrò la tabella ad esempio del deposito con delle informazioni... se invece scelgo Paperino ne avrò altre.... spero di non averti confuso le idee... Lory

-- -----------------------------------------------------
-- Table `mydb`.`Giornalini`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`Giornalini` (
  `id_giornalini` INT(11) NOT NULL AUTO_INCREMENT ,
  `nomegiornalino` VARCHAR(45) NULL ,
  PRIMARY KEY (`id_giornalini`) )
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`sede`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`sede` (
  `idsede` INT(11) NOT NULL AUTO_INCREMENT ,
  `sede` VARCHAR(45) NULL ,
  `Giornalini_id_giornalini` INT(11) NOT NULL ,
  PRIMARY KEY (`idsede`, `Giornalini_id_giornalini`) ,
  INDEX `fk_sede_Giornalini1` (`Giornalini_id_giornalini` ASC) ,
  CONSTRAINT `fk_sede_Giornalini1`
    FOREIGN KEY (`Giornalini_id_giornalini` )
    REFERENCES `mydb`.`Giornalini` (`id_giornalini` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`personaggi`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`personaggi` (
  `idpersonaggi` INT(11) NOT NULL AUTO_INCREMENT ,
  `sede_idsede` INT(11) NOT NULL ,
  `sede_Giornalini_id_giornalini` INT(11) NOT NULL ,
  `nomepersonaggio` VARCHAR(45) NULL ,
  PRIMARY KEY (`idpersonaggi`, `sede_idsede`, `sede_Giornalini_id_giornalini`) ,
  INDEX `fk_personaggi_sede1` (`sede_idsede` ASC, `sede_Giornalini_id_giornalini` ASC) ,
  CONSTRAINT `fk_personaggi_sede1`
    FOREIGN KEY (`sede_idsede` , `sede_Giornalini_id_giornalini` )
    REFERENCES `mydb`.`sede` (`idsede` , `Giornalini_id_giornalini` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`lavoro`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`lavoro` (
  `idlavoro` INT(11) NOT NULL AUTO_INCREMENT ,
  `ricchezza` VARCHAR(45) NULL ,
  `personaggi_idpersonaggi` INT(11) NOT NULL ,
  `personaggi_sede_idsede` INT(11) NOT NULL ,
  `personaggi_sede_Giornalini_id_giornalini` INT(11) NOT NULL ,
  PRIMARY KEY (`idlavoro`, `personaggi_idpersonaggi`, `personaggi_sede_idsede`, `personaggi_sede_Giornalini_id_giornalini`) ,
  INDEX `fk_lavoro_personaggi1` (`personaggi_idpersonaggi` ASC, `personaggi_sede_idsede` ASC, `personaggi_sede_Giornalini_id_giornalini` ASC) ,
  CONSTRAINT `fk_lavoro_personaggi1`
    FOREIGN KEY (`personaggi_idpersonaggi` , `personaggi_sede_idsede` , `personaggi_sede_Giornalini_id_giornalini` )
    REFERENCES `mydb`.`personaggi` (`idpersonaggi` , `sede_idsede` , `sede_Giornalini_id_giornalini` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `mydb`.`parenti`
-- -----------------------------------------------------
CREATE  TABLE IF NOT EXISTS `mydb`.`parenti` (
  `idparenti` INT(11) NOT NULL AUTO_INCREMENT ,
  `nomeperenti` VARCHAR(45) NULL ,
  `gradoparentela` VARCHAR(45) NULL ,
  `personaggi_idpersonaggi` INT(11) NOT NULL ,
  `personaggi_sede_idsede` INT(11) NOT NULL ,
  `personaggi_sede_Giornalini_id_giornalini` INT(11) NOT NULL ,
  PRIMARY KEY (`idparenti`, `personaggi_idpersonaggi`, `personaggi_sede_idsede`, `personaggi_sede_Giornalini_id_giornalini`) ,
  INDEX `fk_parenti_personaggi1` (`personaggi_idpersonaggi` ASC, `personaggi_sede_idsede` ASC, `personaggi_sede_Giornalini_id_giornalini` ASC) ,
  CONSTRAINT `fk_parenti_personaggi1`
    FOREIGN KEY (`personaggi_idpersonaggi` , `personaggi_sede_idsede` , `personaggi_sede_Giornalini_id_giornalini` )
    REFERENCES `mydb`.`personaggi` (`idpersonaggi` , `sede_idsede` , `sede_Giornalini_id_giornalini` )
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
risposto 5 anni fa
lorymacri
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda