看看这个数据库模式:
用户可以订购产品。对于任何订单,我在orders表中添加一条新记录,并在orders-products N:M 表中为用户订购的任何单个产品添加一条新记录(并填写 items 字段)。但是,当用户创建订单时,我需要显示所有产品的列表,并使用为任何产品订购的数量填写 items 字段。
通常,为此,我使用两个查询。
第一个查询获取产品表中的所有产品:
SELECT * FROM products;
第二个查询获取在orders-products表中订购的产品,通过orders-idorder FK过滤它们:
SELECT orders_idorder AS idorder, products_idproduct AS idproduct, pieces FROM orders_products WHERE orders_idorder=1;
然后我将结果合并到一个数组中,并使用它来显示完整的产品列表以及为每个产品订购的零件。最终结果是这样的:
+---------+------------+--------------+--------+---- ----+ | 订单 | 产品标识 | 描述 | 价格 | 件| +---------+------------+--------------+--------+---- ----+ | 1 | 1 | 产品 1 | 10.20 | 2 | | 1 | 2 | 产品 22 | 11.00 | 空 | | 1 | 3 | 产品 333 | 19.22 | 空 | | 1 | 4 | 产品 4444 | 9.20 | 空 | +---------+------------+--------------+--------+---- ----+
注意:在上面的示例中,products 表中有 4 条记录,而orders-products表中只有 1 条记录(idorder=1,idproduct=1 和pieces=2)。
-> 在这里你可以找到SQL Dump来测试查询。
合并从 2 个查询构建的数组是最好的方法吗?我可以用一个查询来完成吗?
你觉得演出怎么样?