gpt4 book ai didi

MYSQL 与引用表的多重联接

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

我孜孜不倦地研究尝试理解mysql与多个表的连接以及引用表如何发挥作用,但无济于事。另外,这是我的第一篇文章,所以如果我错过了任何规则,请保持温和。

这是我的表格:

customers | CREATE TABLE `customers` (
`customer_num` int(11) NOT NULL AUTO_INCREMENT,
`customer_name` varchar(50) DEFAULT NULL,
`city` varchar(50) DEFAULT NULL,
`state` varchar(50) DEFAULT NULL,
`country` varchar(50) DEFAULT NULL,
PRIMARY KEY (`customer_num`)

orders | CREATE TABLE `orders` (
`order_num` int(11) NOT NULL AUTO_INCREMENT,
`order_date` date DEFAULT NULL,
`shipped_date` date DEFAULT NULL,
`status` varchar(15) DEFAULT NULL,
`comments` text,
`customer_num` int(11) DEFAULT NULL,
PRIMARY KEY (`order_num`)

p_o | CREATE TABLE `p_o` (
`product_num` int(10) unsigned NOT NULL,
`order_num` int(10) unsigned NOT NULL,
KEY `order_num` (`order_num`)

products | CREATE TABLE `products` (
`product_num` int(11) NOT NULL AUTO_INCREMENT,
`year` int(4) unsigned NOT NULL DEFAULT '2014',
`make` varchar(20) NOT NULL,
`model` varchar(20) NOT NULL,
`price` int(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`product_num`)

客户与订单是一对多关系,而订单引用了 p_o,p_o 既具有 Product_num 又具有 order_num,并且 p_o 也连接到产品。

我的目标是进行一个查询(这在某种程度上是最优的,不是所有的选择和位置),它将在一个表中显示所有这些信息。我创建了这个,但无法让它们显示两个以上的表信息。

select * from customers t1 join orders t2 on t1.customer_num=t2.customer_num;

该连接显示了来自订单和客户的所有信息,我打算将其作为内部连接。我尝试了各种方法让他们都加入到一个组织中,但没有一个奏效,而且我相信这就是我的结局。另外,我正在使用一个创建动态 mysql 表的模块,并且不支持 union,但即使您有一个使用 union 的解决方案,我也会采用它。

非常感谢您提供的任何帮助,我已经为此工作了太多时间。

最佳答案

我认为您应该使用以下方式获取所需的信息:

SELECT  
`orders`.`order_num`,
`orders`.`order_date`,
`orders`.`shipped_date`,
`orders`.`status`,
`orders`.`comments`,
`orders`.`customer_num`,
`customers`.`customer_name`,
`customers`.`city`,
`customers`.`state`,
`customers`.`country`,
`products`.`product_num`,
`products`.`year`,
`products`.`make`,
`products`.`model`,
`products`.`price`
FROM
`orders`
inner join `customers`
ON `customers`.`customer_num` = `orders`.`customer_num`
inner join `p_o`
ON `p_o`.`order_num` = `orders`.`order_num`
inner join `products`
ON `products`.`product_num` = `p_o`.`product_num`

我想(并且希望)帮助您了解基于这个问题的多重连接的过程。

这个多重连接操作的文字描述可能是这样的:

<小时/>

我需要提取有关订单的详细信息,即:订单标题信息、订单客户详细信息以及每个订单号中订购的产品。
根据我的数据库结构,我可以看到 orders 表中的每个订单标题都有包含订单所属客户编号的字段,因此我想连接 customers 中的详细数据表到 orders 表中的每个订单。
然后我知道我还需要每个特定订单的每个产品的详细规范。
我的数据库结构表明我可以通过“连接”表p_oproducts表访问产品详细信息p_o然后我将p_o连接到我已经- 根据 order_num 列加入集合 {customers, orders}
现在,在结果集中已包含此信息({customers, orders, p_o}),我只需要将 products 表连接到 product_code 键上的 p_o 表。
最后,我列出了最终结果集所需的列,该结果集由四个表 {customersordersp_o 组成产品}

<小时/>

希望对您有所帮助。

关于MYSQL 与引用表的多重联接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27828762/

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