mysql - 选择列作为行并对结果进行分组

标签 mysql sql database phpmyadmin

我在查询时遇到了困难 我有一个如下所示的客户数据库

客户

  • 身份证
  • 创建时间

字段

  • 姓名
  • 唯一ID

字段内容

  • FieldUniqID
  • 值(value)
  • 客户 ID

最后我想制作一个看起来像这样的表格

  • Customer.ID 作为 CustomerID
  • Field.Name 作为名字
  • Field.Name 作为姓氏
  • 字段名称作为电子邮件
  • Field.Name 作为电话
  • 客户.按创建时创建

希望你能帮我找出如何做

正如你所见,我使用 php 编写了它:

$this->db->query('SET SESSION group_concat_max_len=10000000');
            $q = $this->db->select("GROUP_CONCAT(fieldsContent.Content SEPARATOR '|*|') AS Content,
                                    GROUP_CONCAT(fieldsContent.FieldID SEPARATOR '|*|') AS FieldID,
                                    customers.Created,
                                    customers.ID",false)
                          ->from('customers')
                          ->join('fieldsContent','fieldsContent.TypeID = customers.ID','left outer')
                          ->where(array('fieldsContent.TypeName' => 'customers',
                                        'customers.ID' => $id))
                          ->group_by('fieldsContent.TypeID')
                          ->order_by('customers.Created','DESC')
                          ->get();
            foreach($q->result() as $d){
                $field = explode('|*|',$d->FieldID);
                $content = explode('|*|',$d->Content);
                foreach($field as $k => $FieldID){   
                    $dd[$FieldID] = $content[$k];
                }
            }

但我只需要sql而不使用php

最佳答案

也许像下面这样?

SET SESSION group_concat_max_len=10000000;
CREATE VIEW <view_name> AS 
        ( 
                  SELECT    group_concat(fieldscontent.content separator '|*|') AS content,
                            group_concat(fieldscontent.fieldid separator '|*|') AS fieldid,
                            customers.created
                  FROM      customers 
                  LEFT JOIN fieldscontent
                  ON        fieldscontent.typeid = customers.id
                  GROUP BY  fieldscontent.typeid
                  ORDER BY  customers.created DESC
        )

然后你就可以过滤 View 了!

关于mysql - 选择列作为行并对结果进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26919544/

相关文章:

ruby-on-rails - ActiveRecord - PostgreSQL 中的 Calculate() 方法有多快?

mysql服务器因为一个查询而烧毁,有可能吗?如何加快速度?

mysql - 当提供另一列的值时选择小于当前 id 的记录

mysql - phpMyAdmin SQL - 临时表

java - sql 查询中出现意外的 token 错误

php - 按不同组sql将学生分开

php - 从同一数据集执行2条sql语句

database - 外键有什么问题?

php - 将输入分配给 div?

c - MyISAM/InnoDB 以什么有效的方式从文件中删除特定文本?