我独自研究关系数据库,在阅读了一些文章之后,我在实现它们时遇到了困难。
由于缺乏使用关系数据库的经验,我认为我的错误可能出现在以下3个步骤中的任何一个(如果不是全部3个步骤中的话):
表格创建
值插入
查询调用
我应该指出没有语法错误之类的。
我们讨论的是我理解上的一个错误,所以我将详细讨论这个问题。
桌子:
为了抽象起见,我选择了有人和他们喜欢的饮料(一个人可以喜欢很多饮料,一杯可以被很多人喜欢)。
下面是表的代码(它有两个名称和一个主键):
CREATE TABLE `People`
(
`PeopleID` INT NOT NULL AUTO_INCREMENT,
`FirstName` VARCHAR(25),
`LastName` VARCHAR(25) NOT NULL,
PRIMARY KEY (`PeopleID`)
)
这是表格(饮料名称、菜单中的某个数字或类似的数字以及主键)
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`)
)
最后是表格:
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')
人饮输入:
注:饮料的编号是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的饮料的名字。我没有错误,但是没有任何输出。
最佳答案
你说饮料的身份证是4,5,6
在你使用过的插件中
INSERT INTO PeopleDrinks (DrinksID, PeopleID)VALUES (1, 4)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (2, 5)
INSERT INTO PeopleDrinks (DrinksID, PeopleID) VALUES (3, 6)
饮料ID(第一个数字)是1、2、3,而不是4、5、6之类的。我认为你点错了。