一个mysql一对多问题:各种产品以及我在哪里销售它们。我有多种可以销售的产品,以及多个销售地点。我有一个带有主键的产品表:product_id。我有一个位置表,其中包含 PK location_id 和一个字段 Product_id 以链接到产品表。
因此,SELECT * FROM products LEFT JOIN products_id 上的位置。
我遇到了不明确的列错误。这没有道理,他们应该排队。
因此:SELECT * FROM products LEFT JOINlocations on products.product_id =locations.product_id。
这有效。
问题是:有很多产品我可以获得但目前不销售。有些产品没有位置。要创建添加位置的链接,我需要 Product_id。如果我打印出 $row['product_id'] 我将从位置表中获取产品 ID,如果未售出,则该表为空。我需要第一个表中的产品 ID。
这不可能是一个不寻常的情况。
想法?
最佳答案
您需要在 SELECT 语句中指定要使用 products
表中的 product_id
。这是我正在谈论的内容的示例(SQL Fiddle):
SELECT p.product_id, p.description, p.unit_of_measure, l.location
FROM products p
LEFT JOIN locations l on l.product_id = p.product_id
正如您所见,product_id
3 没有位置,但我仍然显示 product_id
。
关于MYSQL 一对多 : acessing the primary key from the fitst table, 不是第二个的 Fk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25706716/