gpt4 book ai didi

mysql - 从外键查询主键

转载 作者:行者123 更新时间:2023-11-29 00:31:43 24 4
gpt4 key购买 nike

我是 MySQL 的新手,我很难通过表中指定的外键查询或引用主键。有人可以用相当简单的术语解释如何做到这一点,因为考虑到大多数其他人比我拥有更多的 MySQL 知识,我搜索的所有内容都有点难以理解。

让我们假设这些是表格:

CREATE TABLE IF NOT EXISTS customer(
custID int AUTO_INCREMENT,
custLname varchar(30),
custAdd varchar(100),
custSuburb varchar(30),
custPcode varchar(4),
custState varChar(20),
custPhone varchar(10),
PRIMARY KEY (custID)
)ENGINE = INNODB;

CREATE TABLE IF NOT EXISTS tour(
DailyTourID int,
tourDate DATE,
tourTime TIME,
tourName varchar(30),
tourDriverID int,
tourBusID varchar(2),
PRIMARY KEY (DailyTourID, tourDate),
) ENGINE = INNODB;

CREATE TABLE IF NOT EXISTS TourCustLink(
TourCustLinkID int AUTO_INCREMENT,
TourID int,
TourDate DATE,
customerID int,
PRIMARY KEY (TourCustLinkID),
FOREIGN KEY (TourID, TourDate) REFERENCES tour(DailyTourID, tourDate),
FOREIGN KEY (customerID) REFERENCES customer(custID)
) ENGINE = INNODB;

我知道这是一个非常糟糕的例子,但假设我想显示每个客户的 custLname、custAdd、custPhone 和 tourDates。我将如何做到这一点?

最佳答案

JOIN他们:

SELECT 
c.custLname,
c.custAdd,
c.custPhone,
t.TourDate,
t.TourName,
...
FROM TourCustLink AS tl
INNER JOIN Customer AS c ON tl.customerId = c.custID
INNER JOIN Tour AS t ON tl.tourID = t.DailyTourID
AND tl.tourDate = t.tourDate;

您可能还需要使用 OUTER JOIN(LEFT JOINRIGHT JOIN)而不是 INNER JOIN,以防您想要包含那些不匹配的行。

有关JOIN 类型的更多信息,请参阅这篇文章:

关于mysql - 从外键查询主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16211160/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com