【发布时间】:2011-12-09 08:00:58
【问题描述】:
您好,我正在运行一个从多个表中检索结果的查询。
我的查询从一个名为“store_orders_items”的表中检索订单,并从另一个名为“store_orders”的表中检索相应的客户详细信息。
但是,如果一个客户有两个订单,则查询会检索客户详细信息两次,因为查询会根据客户 ID 号选择订单。
所以我得到了两个订单的详细信息,这很好,但客户的详细信息也得到了两次,这是我不想要的。
如何调整我的查询以检索所有订单并且仅检索每个订单的客户详细信息?
这是目前的查询:
"SELECT
store_orders.order_name,
store_orders.order_address,
store_orders.id,
store_orders.order_town,
store_orders.order_county,
store_orders.order_postcode,
store_orders.order_country,
store_orders.order_email,
store_orders.item_total,
product.name,
store_orders_items.sel_item_size,
store_orders_items.sel_item_color,
store_orders_items.sel_item_id,
store_orders.order_date,
product.price
FROM
store_orders_items
LEFT JOIN
store_orders
ON
store_orders_items.order_id = store_orders.id
LEFT JOIN
product
ON
store_orders_items.sel_item_id = product.id
WHERE
store_orders_items.order_id=$id "
这是我用来输出/回显代码的基本示例:
while ($order = mysql_fetch_array($store_orders)){
$name = $order["name"] ;
$size = $order["sel_item_size"];
$color = $order["sel_item_color"];
$order_name = $order["order_name"];
$address = $order["order_address"] ;
$town = $order["order_town"] ;
$county = $order["order_county"] ;
$postcode = $order["order_postcode"] ;
$country = $order["order_country"] ;
$email = $order["order_email"] ;
$price = $order["price"];
$date = $order["order_date"];
$item = "<li>{$name}</li>" ;
$item .= "<li>{$color}</li>" ;
$item .= "<li>{$size}</li>" ;
$item .= "<li>{$price}</li>" ;
$item .= "<li>{$date}</li>" ;
$item .= "<li>{$order_name}</li>" ;
$item .= "<li>{$address}</li>" ;
$item .= "<li>{$town}</li>" ;
$item .= "<li>{$county}</li>" ;
$item .= "<li>{$postcode}</li>" ;
$item .= "<li>{$country}</li>" ;
$item .= "<li>{$email}</li>" ;
echo $item ;
}
【问题讨论】:
-
为什么只需要一次客户详细信息?只需从第一行读取它们,在随后的行中忽略它们。