0

我有那两张桌子

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
4

1 回答 1

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;

这将返回至少有一行与您想要的产品匹配的订单的所有产品。

于 2013-08-21T10:42:56.720 回答