【发布时间】:2020-03-26 05:20:11
【问题描述】:
我为一个服装品牌创建了一个数据库。 products 由 3 个表组成:products、product_photos、inventory。
我遇到的问题与 product_photos 中返回的库存表中的结果数量有关。所以说库存表中应该有 4 个结果(例如尺寸:s、m、l、xl 和数量:20、20、20、20)和 product_photos 表中的 1 个结果(例如照片:url)。在我当前的查询中,product_photos 数据重复了 4 次(例如照片:url、url、url、url)。
我当前的查询如下所示:
SELECT
products.id,
products.type,
products.collection,
products.title,
products.price,
products.thumbnail,
GROUP_CONCAT(product_photos.id) AS photoId,
GROUP_CONCAT(product_photos.photo) AS photos,
GROUP_CONCAT(inventory.size) AS size,
GROUP_CONCAT(inventory.quantity) as quantity
FROM `products`
RIGHT JOIN
`product_photos` ON products.id = product_photos.product_id
RIGHT JOIN `inventory` ON products.id = inventory.product_id
WHERE
products.id = ?
GROUP BY
products.id
我已经尝试过一些事情,例如将右连接更改为内连接和左连接,但右连接似乎是我正在尝试做的技术选择。
这是一些示例数据:
product:
id: 1
product_photo:
id: 1,
product_id: 1,
photo: url
inventory:
id: 1,
product_id: 1,
size: s,
quantity: 20
id: 2,
product_id: 1,
size: l,
quantity: 14
【问题讨论】:
-
请发布一些示例数据和您预期的输出。
-
...没有适当的数据样本和表格文本的预期结果,您的问题不清楚..
-
看到右连接是不寻常的 - 不一定是错的,但我认为在这种情况下左连接更合适
-
使用左连接不会改变我的结果。不过,我相信你是对的,而且我的脑海里已经把 A 表和 B 表倒过来了。 product_id 在库存中也不是唯一的,因为有多行。我现在将使用示例数据编辑我的帖子