修剪返回字段的一部分

时间:2015-12-22 20:09:49

标签: php mysql

我在两个表上有这个查询。

    SELECT vcc.name AS item, vcc.prodid, vcc.quantity AS qty, UPPER( vcc.custom_message ) AS nickname, vfd1.value AS fullname, vfd2.value AS email, vcc.purchaseid, vcc.price, (
vcc.quantity * vcc.price
) AS sub
FROM vxu_4_wpsc_cart_contents AS vcc
INNER JOIN vxu_4_wpsc_submited_form_data AS vfd1 ON vcc.purchaseid = vfd1.log_id
AND vfd1.form_id =2
INNER JOIN vxu_4_wpsc_submited_form_data AS vfd2 ON vcc.purchaseid = vfd2.log_id
AND vfd2.form_id =9

返回此图片(附图片)http://bl.ocks.org/mbostock/3035090

甚至可以修剪尺寸' “项目”列中的详细信息(即小/中/ XL等),以便不显示可能敏感的信息?

用于显示查询的php是:

foreach ( $result as $print )   {
          echo '<tr>';
          echo '<td>' . $print->fullname .'</td>';
          echo '<td>' . $print->nickname .'</td>';
          echo '<td>' . $print->item .'</td>';
          echo '<td>' . $print->qty .'</td>';
          echo '<td>' . $print->email .'</td>';
          echo '<td>' . $print->price .'</td>';
          echo '<td>' . $print->sub .'</td>';
          echo '<td>' . $print->purchaseid .'</td>';
          echo '<td>' . $print->prodid .'</td>';
      echo '</tr>';

2 个答案:

答案 0 :(得分:1)

您可以在打印之前从item列中删除它:

$item = preg_replace('/\b(?:Small|Medium|Large|XL|XXL)\b,? */', '', $print->item); // remove size
$item = str_replace(' ()', '', $item); // If there's nothing else in the parentheses, remove it entirely
echo '<td>' . $item . '</td>';

答案 1 :(得分:0)

我不知道你是否可以控制架构,但在我看来,将大小和项目名称组合是一个非规范化,因为大小(以及颜色)是项目的属性,就像它的名字是。

因此,如果我控制了架构,我会将大小(和颜色)分成不同的列。然后,不包括大小将是微不足道的。

可以使用Barmar优秀的preg_replace()建议来更新新列。

另一种选择是使用具有MariaDB 10的MySQL分支VIRTUAL columns。然后,您可以定义一个新列,其值从其他列派生,例如使用MySQL字符串函数仅提取名称信息。