-- ----------------------------------------------------- -- Table `db`.`kurs` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `db`.`kurs` ( `id_kursu` INT NOT NULL AUTO_INCREMENT , `nazwa_kursu` VARCHAR(30) NOT NULL , PRIMARY KEY (`id_kursu`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `db`.`grupa` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `db`.`grupa` ( `id_grupy` INT NOT NULL AUTO_INCREMENT , `nazwa_grupy` VARCHAR(30) NOT NULL , `zajecia_1` VARCHAR(12) NOT NULL , `godzina_1` TIME NOT NULL , `zajecia_2` VARCHAR(12) NOT NULL , `godzina_2` TIME NOT NULL , `opis_grupy` VARCHAR(300) NOT NULL , PRIMARY KEY (`id_grupy`) ) ENGINE = InnoDB; -- ----------------------------------------------------- -- Table `db`.`kurs_grupy` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `db`.`kurs_grupy` ( `id_kurs_grupy` INT NOT NULL AUTO_INCREMENT , `id_kurs` INT NOT NULL , `id_grupy` INT NOT NULL , PRIMARY KEY (`id_kurs_grupy`) , INDEX `id_kurs` (`id_kurs` ASC) , INDEX `id_grupy` (`id_grupy` ASC) , CONSTRAINT `id_kurs` FOREIGN KEY (`id_kurs` ) REFERENCES `db`.`kurs` (`id_kursu` ) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `id_grupy` FOREIGN KEY (`id_grupy` ) REFERENCES `db`.`grupa` (`id_grupy` ) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = InnoDB;
Zapytanie wygląda tak:
SELECT nazwa_grupy, nazwa_kursu FROM grupa INNER JOIN kurs_grupy USING (id_grupy) INNER JOIN kurs USING (id_kurs);
Niestety wywala błąd:
ERROR 1054 (42S22): Nieznana kolumna 'id_kurs' w from clause.
Próbowałem zamiast id_kurs dać id_kursu i też to samo. Gdzie mam błąd?
Ok rozwiązałem problem:
SELECT kurs.nazwa_kursu, grupa.nazwa_grupy FROM kurs JOIN kurs_grupy ON kurs.id_kursu=kurs_grupy.id_kurs JOIN grupa ON kurs_grupy.id_grupy=grupa.id_grupy;