CREATE TABLE `kategorie` ( `id` mediumint(9) NOT NULL AUTO_INCREMENT, `nazwa` VARCHAR(40) NOT NULL, `il_ksiazek` mediumint(9) DEFAULT NULL, PRIMARY KEY (`id`), KEY `il_ksiazek` (`il_ksiazek`) ) ENGINE=InnoDB; INSERT INTO `kategorie` VALUES (1, 'Literatura polska', 4); INSERT INTO `kategorie` VALUES (2, 'Literatura zagraniczna', 2); CREATE TABLE `ksiazki` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `nazwa` VARCHAR(100) NOT NULL, `wydawnictwo` VARCHAR(50) NOT NULL, `cena` FLOAT NOT NULL DEFAULT '0', `kategoria_id` mediumint(9) NOT NULL, PRIMARY KEY (`id`), KEY `kategoria_id` (`kategoria_id`) ) ENGINE=InnoDB; INSERT INTO `ksiazki` VALUES (1, 'Hamlet', 'AAA', 6.5, 2); INSERT INTO `ksiazki` VALUES (2, 'Makbet', 'AAA', 6.8, 2); INSERT INTO `ksiazki` VALUES (3, 'Potop', 'BBB', 18.4, 1); INSERT INTO `ksiazki` VALUES (4, 'Quo vadis', 'BBB', 17.99, 1); INSERT INTO `ksiazki` VALUES (5, 'Pan Tadeusz', 'CCC', 13.78, 1); INSERT INTO `ksiazki` VALUES (6, 'Nad Niemnem', 'CCC', 15.45, 1);
"Przy każdym rekordzie w tabeli ksiazki pole kategoria_id przechowuje numeryczny ID rekordu kategorii, do którego dana książka jest przypisana."
po wpisaniu
SELECT kategorie.nazwa FROM ksiazki, kategorie WHERE kategorie.id = ksiazki.kategoria_id
AND ksiazki.id = 3;
pojawia sie
+-------------------+
| nazwa------------|
+-------------------+
| Literatura polska |
+-------------------+
1 row in set (0.02 sec)
czy moglibyscie mi wytłumaczyc w ktorym miejscu kategoria_id przechowuje numeryczny ID rekordu kategorii? czy chodzi o PRIMARY KEY (id)? jesli tak to skad wiadomo ze chodzi o id kategorii a nie id rekordu ksiazki? a takze wyjasnic dlaczego w zapytaniu wystepuje ta kropka? po prostu prosiłbym o wytłuamczenie mi podstaw działania relacji bo przeczytalem dwa kursy i nie do konca to rozumiem