связи в EER диаграмме MySQL Workbench
Делаю ERR диаграмму через MySQL Workbench, использую для языков и стран связь - многие ко многим, для континентов и стран - один ко многим(до религий ще не добрался, потому что не получается с языками). И вроде бы как должно работать, но получается если делаю запрос рода
SELECT country.name, partoftheworld.NamePartOfTheWorld, language.LanguageName
FROM country, partoftheworld, language
WHERE (((partoftheworld.id)="4")AND((language.id)="4"));
то, вне зависимости от того какие ID я поставлю, все равно выводятся названия всех стран. Хотя в таблице language_has_country явно прописано какой id языка относится к id страны. Хотелось бы понять, почему не выводится только нужная мне информация. Ниже код таблицы
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';
-- Schema world
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `world` DEFAULT CHARACTER SET utf8mb3 ;
USE `world` ;
-- -----------------------------------------------------
-- Table `world`.`partoftheworld`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `world`.`partoftheworld` (
`id` INT NOT NULL,
`NamePartOfTheWorld` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb3;
-- -----------------------------------------------------
-- Table `world`.`country`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `world`.`country` (
`id` INT NOT NULL,
`partoftheworld_id` INT NOT NULL,
`name` VARCHAR(45) NOT NULL,
`capital` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`),
INDEX `fk_country_partoftheworld1_idx` (`partoftheworld_id` ASC) VISIBLE,
CONSTRAINT `fk_country_partoftheworld1`
FOREIGN KEY (`partoftheworld_id`)
REFERENCES `world`.`partoftheworld` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
AUTO_INCREMENT = 2
DEFAULT CHARACTER SET = utf8mb3;
-- -----------------------------------------------------
-- Table `world`.`language`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `world`.`language` (
`id` INT NOT NULL AUTO_INCREMENT,
`LanguageName` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb3;
-- -----------------------------------------------------
-- Table `world`.`religion`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `world`.`religion` (
`id` INT NOT NULL AUTO_INCREMENT,
`country_id` INT NOT NULL,
`ReligionName` VARCHAR(45) NOT NULL,
INDEX `fk_religion_country1_idx` (`country_id` ASC) VISIBLE,
PRIMARY KEY (`id`),
CONSTRAINT `fk_religion_country1`
FOREIGN KEY (`country_id`)
REFERENCES `world`.`country` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb3;
-- -----------------------------------------------------
-- Table `world`.`language_has_country`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `world`.`language_has_country` (
`country_id` INT NOT NULL,
`language_id` INT NOT NULL,
INDEX `fk_language_has_country_country1_idx` (`country_id` ASC) VISIBLE,
INDEX `fk_language_has_country_language1_idx` (`language_id` ASC) VISIBLE,
PRIMARY KEY (`country_id`, `language_id`),
CONSTRAINT `fk_language_has_country_language1`
FOREIGN KEY (`language_id`)
REFERENCES `world`.`language` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE,
CONSTRAINT `fk_language_has_country_country1`
FOREIGN KEY (`country_id`)
REFERENCES `world`.`country` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb3;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;