我独自研究关系数据库,在阅读了一些文章之后,我在实现它们时遇到了困难。
由于缺乏使用关系数据库的经验,我认为我的错误可能出现在以下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之类的。我认为你点错了。

08-25 12:16