php - 如何mysql GROUP_CONCAT

标签 php mysql group-concat

我有那两张 table

订单 ID

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

最佳答案

您的查询正在过滤产品上的所有行。您需要将该比较移至 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;

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

关于php - 如何mysql GROUP_CONCAT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18354857/

相关文章:

mysql - 如何使用 MySQL Group_concat

mysql - 选择group_concat()包含字符的记录

php - 无法使用 PHP 创建的管道写入 C 应用程序的 STDIN

php - 使用 "mysql_fetch_array();"制作表格无法正常工作

php - 是否总是需要向用户隐藏 mysql 生成的 id?

php - 在 PHP 和 MySQL 上处理时区的最佳方法是什么?

mysql - 高 5 分钟平均负载的奇怪案例

mysql - 在主查询的 "IN"子句中使用逗号分隔列表的子查询结果

php - 使用PDO语句时,可以使用函数安全地插入变量吗?

php - 我们可以在 magento 中进行小部件选项验证吗?