我正在学习关系型数据库,在阅读了一些文章后,我无法实现它们。多对多关系数据库不能正常工作
由于我缺乏与关系数据库的经验,我相信我的错误可以是任何以下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。看到我的回答 –