gpt4 book ai didi

mysql - 从不直接连接的表中获取 2 个变量

转载 作者:行者123 更新时间:2023-11-29 21:06:07 25 4
gpt4 key购买 nike

我有这些表:

Customer = {id,firstname,last name,street,city}
Invoice = {id, customerid, total}
Item = {invoiceid, item, productid, quantity, cost}
Product = {id, name, price}

我想获取客户的名字以及他购买的产品列表。

我创建了一个sql代码:

select customer.firstname, product.name from product
inner join item on item.productid = product.id
inner join invoice on invoice.id=item.invoiceid
inner join customer on customer.id=invoice.customerid
where customer.id=24

customer.id 是 24,因为在这个 id 上我只能得到 3 个项目的名称。不幸的是,我得到了这些项目的乘法。

我应该在查询中修复什么?

最佳答案

I am getting multiplication of these items.

这就是当您请求连接时关系数据库的工作方式。您会得到 Cartesian Product匹配记录。

但是,MySQL 有一个工具可以让您将多个值放入一个字段中 - 它称为 group_concat :

SELECT
customer.firstname
, GROUP_CONCAT(product.name SEPARATOR ', ')
FROM product
INNER JOIN item ON item.productid = product.id
INNER JOIN invoice ON invoice.id=item.invoiceid
INNER JOIN customer ON customer.id=invoice.customerid
WHERE customer.id=24
GROUP BY customer.id

请注意 GROUP BY 的使用,它将同一客户 ID 的所有行“合并”到一个组中,GROUP_CONCAT 在该组上进行操作。

关于mysql - 从不直接连接的表中获取 2 个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36814477/

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