我正在爲個人開發創建一個庫應用程序,並希望進一步瞭解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
我做一個簡單的搜索,我想顯示所有書籍(從書中選擇*),我想顯示所有與他們對應的書籍類別。這可以工作,但顯示類別號碼而不是類別名稱。
e.g
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>';
};
我一直在尋找外鍵和索引,但是我似乎無法讓他們的任何意義。 我對此很新,所以任何幫助,非常感謝。
你需要加入表結合在一起,得到你想要的。更改外鍵引用對查詢不起作用。這種約束是關於關係完整性的,而不是查詢解釋。 – 2014-12-04 13:07:57