Randy Busher
Benutzer
- Beiträge
- 10
Hallo ihr
Vielen Dank, dass Du Dir meine Frage anschaust.
Um die Fragestellung zu vereinfachen, habe ich ein SQL DUMP welches so ausschaut:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
CREATE TABLE IF NOT EXISTS `mydb`.`DasHaus` (
`idDasHaus` INT NOT NULL AUTO_INCREMENT,
`Bauform` VARCHAR(45) NULL,
PRIMARY KEY (`idDasHaus`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`EinrichtungSitze` (
`idEinrichtungSitze` INT NOT NULL AUTO_INCREMENT,
`Sitzgelegenheit` VARCHAR(45) NULL,
PRIMARY KEY (`idEinrichtungSitze`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`EinrichtungSitze_has_DasHaus` (
`EinrichtungSitze_idEinrichtungSitze` INT NOT NULL,
`DasHaus_idDasHaus` INT NOT NULL,
PRIMARY KEY (`EinrichtungSitze_idEinrichtungSitze`, `DasHaus_idDasHaus`),
INDEX `fk_EinrichtungSitze_has_DasHaus_DasHaus1_idx` (`DasHaus_idDasHaus` ASC) VISIBLE,
INDEX `fk_EinrichtungSitze_has_DasHaus_EinrichtungSitze_idx` (`EinrichtungSitze_idEinrichtungSitze` ASC) VISIBLE,
CONSTRAINT `fk_EinrichtungSitze_has_DasHaus_EinrichtungSitze`
FOREIGN KEY (`EinrichtungSitze_idEinrichtungSitze`)
REFERENCES `mydb`.`EinrichtungSitze` (`idEinrichtungSitze`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_EinrichtungSitze_has_DasHaus_DasHaus1`
FOREIGN KEY (`DasHaus_idDasHaus`)
REFERENCES `mydb`.`DasHaus` (`idDasHaus`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Bodenbelag` (
`idDachziegel` INT NOT NULL AUTO_INCREMENT,
`Bodenbelag` VARCHAR(45) NULL,
PRIMARY KEY (`idDachziegel`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Bodenbelag_has_DasHaus` (
`Bodenbelag_idDachziegel` INT NOT NULL,
`DasHaus_idDasHaus` INT NOT NULL,
PRIMARY KEY (`Bodenbelag_idDachziegel`, `DasHaus_idDasHaus`),
INDEX `fk_Bodenbelag_has_DasHaus_DasHaus1_idx` (`DasHaus_idDasHaus` ASC) VISIBLE,
INDEX `fk_Bodenbelag_has_DasHaus_Bodenbelag1_idx` (`Bodenbelag_idDachziegel` ASC) VISIBLE,
CONSTRAINT `fk_Bodenbelag_has_DasHaus_Bodenbelag1`
FOREIGN KEY (`Bodenbelag_idDachziegel`)
REFERENCES `mydb`.`Bodenbelag` (`idDachziegel`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Bodenbelag_has_DasHaus_DasHaus1`
FOREIGN KEY (`DasHaus_idDasHaus`)
REFERENCES `mydb`.`DasHaus` (`idDasHaus`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Treppenart` (
`idTreppenart` INT NOT NULL AUTO_INCREMENT,
`Treppenbelag` VARCHAR(45) NULL,
PRIMARY KEY (`idTreppenart`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Treppenart_has_DasHaus` (
`Treppenart_idTreppenart` INT NOT NULL,
`DasHaus_idDasHaus` INT NOT NULL,
PRIMARY KEY (`Treppenart_idTreppenart`, `DasHaus_idDasHaus`),
INDEX `fk_Treppenart_has_DasHaus_DasHaus1_idx` (`DasHaus_idDasHaus` ASC) VISIBLE,
INDEX `fk_Treppenart_has_DasHaus_Treppenart1_idx` (`Treppenart_idTreppenart` ASC) VISIBLE,
CONSTRAINT `fk_Treppenart_has_DasHaus_Treppenart1`
FOREIGN KEY (`Treppenart_idTreppenart`)
REFERENCES `mydb`.`Treppenart` (`idTreppenart`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Treppenart_has_DasHaus_DasHaus1`
FOREIGN KEY (`DasHaus_idDasHaus`)
REFERENCES `mydb`.`DasHaus` (`idDasHaus`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
------------------------------SCHNIPP HIER -------------------
Ich habe nun folgendes Problem, ich habe 170 Häuser in der Tabelle: Das Haus und einige von denen sind auch schon mit Treppen und Bodenbelag und Sitzen eingerichtet, aber nicht alle.
Wie sieht die Abfrage aus, wenn ich ausschließlich die Häuser angezeigt haben möchte, die weder Bodenbelag, noch Treppe noch Sitze haben. Also die, die noch im "Rohbau" sind.
Ich suche auch gern woanders, wenn ich denn wüsste, wonach ich eigentlich suche. Join Left, Inner Join etc passt irgendwie nicht so richtig, da die DB nur exemplatisch ist und es im Produktivsytem 12 weitere n:m Verknüpfungen gibt.
Vielen Dank, dass Du bis hier gelesen hast. Wenn Dein Impuls jetzt ist, mir zu antworten: Na ja, mein Onkel hatte auch mal eine Garage o.ä. dann wäre es nett, wenn Du das nicht machen würdest.
LG Randy
Vielen Dank, dass Du Dir meine Frage anschaust.
Um die Fragestellung zu vereinfachen, habe ich ein SQL DUMP welches so ausschaut:
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
USE `mydb` ;
CREATE TABLE IF NOT EXISTS `mydb`.`DasHaus` (
`idDasHaus` INT NOT NULL AUTO_INCREMENT,
`Bauform` VARCHAR(45) NULL,
PRIMARY KEY (`idDasHaus`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`EinrichtungSitze` (
`idEinrichtungSitze` INT NOT NULL AUTO_INCREMENT,
`Sitzgelegenheit` VARCHAR(45) NULL,
PRIMARY KEY (`idEinrichtungSitze`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`EinrichtungSitze_has_DasHaus` (
`EinrichtungSitze_idEinrichtungSitze` INT NOT NULL,
`DasHaus_idDasHaus` INT NOT NULL,
PRIMARY KEY (`EinrichtungSitze_idEinrichtungSitze`, `DasHaus_idDasHaus`),
INDEX `fk_EinrichtungSitze_has_DasHaus_DasHaus1_idx` (`DasHaus_idDasHaus` ASC) VISIBLE,
INDEX `fk_EinrichtungSitze_has_DasHaus_EinrichtungSitze_idx` (`EinrichtungSitze_idEinrichtungSitze` ASC) VISIBLE,
CONSTRAINT `fk_EinrichtungSitze_has_DasHaus_EinrichtungSitze`
FOREIGN KEY (`EinrichtungSitze_idEinrichtungSitze`)
REFERENCES `mydb`.`EinrichtungSitze` (`idEinrichtungSitze`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_EinrichtungSitze_has_DasHaus_DasHaus1`
FOREIGN KEY (`DasHaus_idDasHaus`)
REFERENCES `mydb`.`DasHaus` (`idDasHaus`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Bodenbelag` (
`idDachziegel` INT NOT NULL AUTO_INCREMENT,
`Bodenbelag` VARCHAR(45) NULL,
PRIMARY KEY (`idDachziegel`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Bodenbelag_has_DasHaus` (
`Bodenbelag_idDachziegel` INT NOT NULL,
`DasHaus_idDasHaus` INT NOT NULL,
PRIMARY KEY (`Bodenbelag_idDachziegel`, `DasHaus_idDasHaus`),
INDEX `fk_Bodenbelag_has_DasHaus_DasHaus1_idx` (`DasHaus_idDasHaus` ASC) VISIBLE,
INDEX `fk_Bodenbelag_has_DasHaus_Bodenbelag1_idx` (`Bodenbelag_idDachziegel` ASC) VISIBLE,
CONSTRAINT `fk_Bodenbelag_has_DasHaus_Bodenbelag1`
FOREIGN KEY (`Bodenbelag_idDachziegel`)
REFERENCES `mydb`.`Bodenbelag` (`idDachziegel`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Bodenbelag_has_DasHaus_DasHaus1`
FOREIGN KEY (`DasHaus_idDasHaus`)
REFERENCES `mydb`.`DasHaus` (`idDasHaus`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Treppenart` (
`idTreppenart` INT NOT NULL AUTO_INCREMENT,
`Treppenbelag` VARCHAR(45) NULL,
PRIMARY KEY (`idTreppenart`))
ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `mydb`.`Treppenart_has_DasHaus` (
`Treppenart_idTreppenart` INT NOT NULL,
`DasHaus_idDasHaus` INT NOT NULL,
PRIMARY KEY (`Treppenart_idTreppenart`, `DasHaus_idDasHaus`),
INDEX `fk_Treppenart_has_DasHaus_DasHaus1_idx` (`DasHaus_idDasHaus` ASC) VISIBLE,
INDEX `fk_Treppenart_has_DasHaus_Treppenart1_idx` (`Treppenart_idTreppenart` ASC) VISIBLE,
CONSTRAINT `fk_Treppenart_has_DasHaus_Treppenart1`
FOREIGN KEY (`Treppenart_idTreppenart`)
REFERENCES `mydb`.`Treppenart` (`idTreppenart`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Treppenart_has_DasHaus_DasHaus1`
FOREIGN KEY (`DasHaus_idDasHaus`)
REFERENCES `mydb`.`DasHaus` (`idDasHaus`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
------------------------------SCHNIPP HIER -------------------
Ich habe nun folgendes Problem, ich habe 170 Häuser in der Tabelle: Das Haus und einige von denen sind auch schon mit Treppen und Bodenbelag und Sitzen eingerichtet, aber nicht alle.
Wie sieht die Abfrage aus, wenn ich ausschließlich die Häuser angezeigt haben möchte, die weder Bodenbelag, noch Treppe noch Sitze haben. Also die, die noch im "Rohbau" sind.
Ich suche auch gern woanders, wenn ich denn wüsste, wonach ich eigentlich suche. Join Left, Inner Join etc passt irgendwie nicht so richtig, da die DB nur exemplatisch ist und es im Produktivsytem 12 weitere n:m Verknüpfungen gibt.
Vielen Dank, dass Du bis hier gelesen hast. Wenn Dein Impuls jetzt ist, mir zu antworten: Na ja, mein Onkel hatte auch mal eine Garage o.ä. dann wäre es nett, wenn Du das nicht machen würdest.
LG Randy