我有那两张桌子
id_of_orders
id_order| time | username | price
35 |2013-08-11 15:03:01| |0.00
36 |2013-08-21 12:43:31|skata |0.00
37 |2013-08-21 12:43:55|skata |12.00
订单
order_id | product | ulika
35 |frento |zaxari,fountoukia,troufa
35 |frento |zaxari,kakao
35 |frento |
36 |frapes |zaxari
37 |frento |
35 |frapes |
我希望特定产品能够返回包含它的所有记录数据 我使用GROUP_CONCAT但它不会返回产品的所有值。
if(!empty($_SESSION['proions'])){
$query= "SELECT i.id_order, i.time, i.username, i.price, GROUP_CONCAT(o.product) as PRO
FROM id_of_orders i INNER JOIN orders o
ON i.id_order = o.order_id
WHERE o.product = '$_SESSION[proions]'";
$query .=" GROUP BY i.id_order" ;
$result = mysql_query($query);
}
例如,如果我尝试收集包含'frento'的记录数据,我会得到这些结果。我想念产品'frapes'。
35: -> 2013-08-11 15:03:01 0.00 frento,frento,frento
37: -> 2013-08-21 12:43:55 skata 12.00 frento
答案 0 :(得分:1)
您的查询正在过滤产品上的所有行。您需要将该比较移至having
子句:
SELECT i.id_order, i.time, i.username, i.price, GROUP_CONCAT(o.product) as PRO
FROM id_of_orders i INNER JOIN
orders o
ON i.id_order = o.order_id
GROUP BY i.id_order
HAVING max(o.product = '$_SESSION[proions]'") > 0;
这将返回订单的所有产品,其中至少有一行符合您想要的产品。