Я создаю приложение библиотеки для личного развития и хотел бы более подробно узнать о MySql.Базовые таблицы объединений и внешние ключи
я в настоящее время есть две таблицы 'книга' и 'категория'
книга
id title author category isbn
---- ------- ---------- ---------- -------
1 Treasure Chest Jim Jones 1 14252637
2 Pirates Boat Sue Smith 2 88447737
3 Adventure Land Harry Jo 3 01918273
4 Winter Week Sam Dill 3 00999337
категории
id cat_name
---- -------
1 Horror
2 Kids
3 Fiction
4 Science
Я делаю простой поиск, где я хочу показать все книги (выберите * из книги), и я хотел бы отобразить все книги с их соответствием . Это работает, но отображает номер категории, а не название категории.
например
id title author category isbn
2710 Animals 123 Tiny Touch 2 978-1-84958-877-5
2709 Animal Homes Tiny Touch 2 978-1-84958-880-5
2708 Black and White Usborne 3 978-1-4095-2393-2
2707 Babies Usborne 1 978-1-4095-3575-1
Как я могу изменить эти таблицы таким образом, что cat_name и категории объединяются?
Я попытался выполнить команду в phpmyadmin, как показано ниже, однако она вернула ошибку;
ALTER TABLE book
ADD FOREIGN KEY (category) REFERENCES category(cat_name);
ошибка
#1452 - Cannot add or update a child row: a foreign key constraint fails (`sslib`.`#sql-1ab4_1dae`, CONSTRAINT `#sql-1ab4_1dae_ibfk_1` FOREIGN KEY (`category`) REFERENCES `category` (`cat_name`))
PHP
$sql = "SELECT * FROM book";
$res = $conn->query($sql) or trigger_error($conn->error."[$sql]");
while($row = $res->fetch_array()) { //line 101
echo '<tbody>';
echo '<tr>';
echo '<td>' . $row['id'] . '</td>';
echo '<td>' . $row['title'] . '</td>';
echo '<td>' . $row['author'] . '</td>';
echo '<td>' . $row['category'] . '</td>';
echo '<td>' . $row['isbn'] . '</td>';
echo '<td>' . $row['publicationYear'] . '</td>';
echo '</tr>';
echo '</tbody>';
};
Я смотрел на внешние ключи и индексы, однако я не могу показаться, чтобы сделать какой-то смысл их. Я совершенно новичок в этом, поэтому любая помощь очень ценится.
Вам нужно соединить таблицы вместе, чтобы получить то, что вы хотите. Изменение ссылки внешнего ключа не повлияет на запрос. Такое ограничение касается реляционной целостности, а не интерпретации запросов. –