Sql 取决于客户订单的联合查询问题

Sql 取决于客户订单的联合查询问题,sql,join,Sql,Join,我不得不对sql查询进行一些编辑,因为我需要包含一些额外的数据,起初我认为所有数据都已排序,直到今天,有人下了订单,新查询只返回一个产品,而不是5个订单。这是由于某些产品没有属性 新查询如下: SELECT op.orders_id, op.products_id, op.products_model, op. products_name, op.final_price, op.products_quantity, opa.products_options_values_id, op

我不得不对sql查询进行一些编辑,因为我需要包含一些额外的数据,起初我认为所有数据都已排序,直到今天,有人下了订单,新查询只返回一个产品,而不是5个订单。这是由于某些产品没有属性

新查询如下:

SELECT op.orders_id, op.products_id, op.products_model, op. products_name,
   op.final_price, op.products_quantity, opa.products_options_values_id,
   opa.products_prid
   FROM orders_products op
   JOIN orders_products_attributes opa ON op.orders_products_id = opa.orders_products_id
   WHERE op.orders_id = 21679
我在这里设置了一个sql数据库,处理相关的数据库信息

原始查询确实按预期返回了5个REULT,是:

   SELECT op.orders_id, op.products_id, op.products_model, op. products_name,
   op.final_price, op.products_quantity
   FROM orders_products op
   WHERE op.orders_id = 21679
在这里可以找到原始问题,其中包含SQLFIDLE,用于显示特定顺序所需的数据

对此查询的任何更改都必须返回上一个小提琴中使用的21535订单的正确结果

这似乎是由于所使用的联接引用了orders\u products\u id,但如果不需要属性,则产品将不在同一个表中

我不能使用orders\u id进行连接,因为根据前面的问题,这会给我错误的结果

有什么建议吗?我现在完全被卡住了


谢谢

我认为您需要一个
左连接
,因为并非所有产品都具有以下属性:

SELECT op.orders_id, op.products_id, op.products_model, op. products_name,
op.final_price, op.products_quantity, opa.products_options_values_id,
opa.products_prid
FROM orders_products op
LEFT JOIN orders_products_attributes opa ON op.orders_products_id = opa.orders_products_id
WHERE op.orders_id = 21679

完美的非常感谢。你能解释一下为什么左JOIN给JOIN带来了不同的结果吗。始终愿意学习如何以及为什么。因为您最初的查询过滤掉了没有属性的产品。一个
左连接将保留它们。