我正在學習關係型數據庫,在閱讀了一些文章後,我無法實現它們。多對多關係數據庫不能正常工作
由於我缺乏與關係數據庫的經驗,我相信我的錯誤可以是任何以下3種(如果不是在所有3)步驟:
- 表銳
- 價值加入
- 查詢電話
我應該指出,沒有任何語法錯誤或類似的東西。
我們在談論我的理解錯誤,所以我會詳細討論這個問題。
的表格:
因爲我選擇了讓人們的抽象和他們喜歡(1人可以喜歡很多飲料的飲料,喝一杯可以被許多人喜歡
這裏是。爲表People
代碼(它有2名,以及一個主鍵):
CREATE TABLE `People`
(
`PeopleID` INT NOT NULL AUTO_INCREMENT,
`FirstName` VARCHAR(25),
`LastName` VARCHAR(25) NOT NULL,
PRIMARY KEY (`PeopleID`)
)
下面是表Drinks
(飲料的名稱,在菜單或類似的,例如與主鍵的東西有些數)
CREATE TABLE `Drinks`
(
`DrinksID` INT NOT NULL AUTO_INCREMENT,
`Code` VARCHAR(10) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL,
`Name` VARCHAR(100) NOT NULL,
PRIMARY KEY (`DrinksID`)
)
最後是表PeopleDrinks
:
CREATE TABLE `PeopleDrinks`
(
`DrinksID` INT NOT NULL default 1,
`PeopleID` INT NOT NULL default 1,
PRIMARY KEY (`DrinksID`,`PeopleID`)
)
注:從here我看到的例子給出了第三個表和幾乎複製它。
值插入:
人輸入:
INSERT INTO People (FirstName, LastName) VALUES ('John', 'Smith')
INSERT INTO People (FirstName, LastName) VALUES ('Sam', 'Johnson')
INSERT INTO People (FirstName, LastName) VALUES ('Michael', 'Morgan')
飲料輸入:
INSERT INTO Drinks (Code, Name)VALUES ('#543', 'Beer')
INSERT INTO Drinks (Code, Name) VALUES ('#132', 'Vodka')
INSERT INTO Drinks (Code, Name) VALUES ('#123', 'Wine')
PeopleDrinks輸入:
注:的飲料的ID是4,5和6. 不是 1,2,3.
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (1, 4)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (2, 5)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (3, 6)
以上我們給每個人一個最喜歡的飲料。下面我們就應該有一個人喜歡所有的飲料:
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (1, 5)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (1, 6)
最後查詢電話:
//Consider $link an established, working connection to the database
$result = mysqli_query($link, "SELECT
`People`.*
FROM
`People`
JOIN
`PeopleDrinks` ON `People`.`PeopleID` = `PeopleDrinks`.`PeopleID`
WHERE
`PeopleDrinks`.`DrinksID` = 5");
while($row = mysqli_fetch_array($result))
{
echo $row['FirstName'] . " " . $row['LastName'];
echo "<br/>";
}
上面的代碼,應打印任何人誰與ID 5.我喜歡喝的名字不要錯誤,但我沒有得到任何輸出。
難道你不應該插入PeopleDrinks(DrinksID,PeopleID)VALUES(5,5)'? DrinksID的值始終爲1 .. –
根據您插入PeopleDrinks,飲料ID爲1,2,3。看到我的回答 –