Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从联接表结果中分离值?_Php_Mysql_Codeigniter - Fatal编程技术网

Php 如何从联接表结果中分离值?

Php 如何从联接表结果中分离值?,php,mysql,codeigniter,Php,Mysql,Codeigniter,我有一个简单的连接表,看起来像这样 NO CLASS NAME STATUS 1 1A JOHN 1 2 1A SARA 1 3 1A LYOD 1 4 1B JOHN 1 5 1B SHIN 1 我使用文本框显示类,使用文本区显示名称。1A类的输出应如下所示: Class : 1A Name :

我有一个简单的连接表,看起来像这样

NO   CLASS     NAME    STATUS
 1      1A     JOHN         1
 2      1A     SARA         1
 3      1A     LYOD         1
 4      1B     JOHN         1
 5      1B     SHIN         1
我使用
文本框
显示
,使用
文本区
显示
名称
1A类的输出应如下所示:

Class : 1A
Name  : JOHN, SARA, LYOD
如何仅使用联接表(而不是多个查询)执行此操作

这就是我循环结果的方式:

$query  = $this->xxx->yyy($class_name); //JOINED RESULT

    $data = array(
        'titlepage'     => APP_TITLEPAGE,            
        'record'        => $query, //This is the result that is sent to the view
        'complete'      => 'true',
        'loadmethod'    => 'add',
        'contentpage'   => 'test_page/detail'   
    );

    $this->load->view('shared/master_app', $data);

如果您想在一列中添加同一类中的所有名称,那么可以通过
GROUP\u CONCAT()
mysql函数来实现

使用GROUP_CONCAT调整您的查询。有关示例,请参见下文

SELECT CLASS, GROUP_CONCAT(NAME) 
FROM  table_name 
GROUP BY CLASS;
它将像这样输出

1A JOHN,SARA,LYOD
2A JOHN,SHIN
$query  = $this->xxx->yyy($class_name); //JOINED RESULT
$data = array(
    'titlepage'     => APP_TITLEPAGE,            
    'record'        => groupResults($query), //This is the result that is sent to the view
    'complete'      => 'true',
    'loadmethod'    => 'add',
    'contentpage'   => 'test_page/detail'   
);

$this->load->view('shared/master_app', $data);
您还可以使用GROUP_COCAT separator在名称之间放置自定义分隔符

  SELECT CLASS, GROUP_CONCAT(NAME SEPARATOR ' -- ') 
    FROM  table_name 
    GROUP BY CLASS;

作为参考

如果您想在一列中添加同一类中的所有名称,那么可以通过
GROUP\u CONCAT()
mysql函数来实现

使用GROUP_CONCAT调整您的查询。有关示例,请参见下文

SELECT CLASS, GROUP_CONCAT(NAME) 
FROM  table_name 
GROUP BY CLASS;
它将像这样输出

1A JOHN,SARA,LYOD
2A JOHN,SHIN
$query  = $this->xxx->yyy($class_name); //JOINED RESULT
$data = array(
    'titlepage'     => APP_TITLEPAGE,            
    'record'        => groupResults($query), //This is the result that is sent to the view
    'complete'      => 'true',
    'loadmethod'    => 'add',
    'contentpage'   => 'test_page/detail'   
);

$this->load->view('shared/master_app', $data);
您还可以使用GROUP_COCAT separator在名称之间放置自定义分隔符

  SELECT CLASS, GROUP_CONCAT(NAME SEPARATOR ' -- ') 
    FROM  table_name 
    GROUP BY CLASS;

作为参考,您的查询数组如下所示:

$query = [
    ['NO' => 1, 'CLASS' => '1A', 'NAME' => 'JOHN', 'STATUS' => '1'],
    ['NO' => 2, 'CLASS' => '1A', 'NAME' => 'SARA', 'STATUS' => '1'],
    ['NO' => 3, 'CLASS' => '1A', 'NAME' => 'LYOD', 'STATUS' => '1'],
    ['NO' => 4, 'CLASS' => '1B', 'NAME' => 'JOHN', 'STATUS' => '1'],
];
$result = [
    '1A' => ['JOHN', 'SARA', 'LYOD'],
    '1B' => ['JOHN']
]
您可以创建一个函数来对其进行排列或分组 将其命名为groupResults($query)

现在的结果如下所示:

$query = [
    ['NO' => 1, 'CLASS' => '1A', 'NAME' => 'JOHN', 'STATUS' => '1'],
    ['NO' => 2, 'CLASS' => '1A', 'NAME' => 'SARA', 'STATUS' => '1'],
    ['NO' => 3, 'CLASS' => '1A', 'NAME' => 'LYOD', 'STATUS' => '1'],
    ['NO' => 4, 'CLASS' => '1B', 'NAME' => 'JOHN', 'STATUS' => '1'],
];
$result = [
    '1A' => ['JOHN', 'SARA', 'LYOD'],
    '1B' => ['JOHN']
]
这是我得到的快照:

所以现在你可以这样使用它

1A JOHN,SARA,LYOD
2A JOHN,SHIN
$query  = $this->xxx->yyy($class_name); //JOINED RESULT
$data = array(
    'titlepage'     => APP_TITLEPAGE,            
    'record'        => groupResults($query), //This is the result that is sent to the view
    'complete'      => 'true',
    'loadmethod'    => 'add',
    'contentpage'   => 'test_page/detail'   
);

$this->load->view('shared/master_app', $data);
现在,在视图中,您可以在此阵列上循环,如下所示:

foreach($record as $class => $names) {
    echo "<input type='text' value='" . $class . "'>";
    echo "<textarea>" . implode(', ', $names) . "</textarea>";
}
foreach($class=>$name记录){
回声“;
echo“”。内爆(',',$names)。“”;
}

因此您的查询数组如下所示:

$query = [
    ['NO' => 1, 'CLASS' => '1A', 'NAME' => 'JOHN', 'STATUS' => '1'],
    ['NO' => 2, 'CLASS' => '1A', 'NAME' => 'SARA', 'STATUS' => '1'],
    ['NO' => 3, 'CLASS' => '1A', 'NAME' => 'LYOD', 'STATUS' => '1'],
    ['NO' => 4, 'CLASS' => '1B', 'NAME' => 'JOHN', 'STATUS' => '1'],
];
$result = [
    '1A' => ['JOHN', 'SARA', 'LYOD'],
    '1B' => ['JOHN']
]
您可以创建一个函数来对其进行排列或分组 将其命名为groupResults($query)

现在的结果如下所示:

$query = [
    ['NO' => 1, 'CLASS' => '1A', 'NAME' => 'JOHN', 'STATUS' => '1'],
    ['NO' => 2, 'CLASS' => '1A', 'NAME' => 'SARA', 'STATUS' => '1'],
    ['NO' => 3, 'CLASS' => '1A', 'NAME' => 'LYOD', 'STATUS' => '1'],
    ['NO' => 4, 'CLASS' => '1B', 'NAME' => 'JOHN', 'STATUS' => '1'],
];
$result = [
    '1A' => ['JOHN', 'SARA', 'LYOD'],
    '1B' => ['JOHN']
]
这是我得到的快照:

所以现在你可以这样使用它

1A JOHN,SARA,LYOD
2A JOHN,SHIN
$query  = $this->xxx->yyy($class_name); //JOINED RESULT
$data = array(
    'titlepage'     => APP_TITLEPAGE,            
    'record'        => groupResults($query), //This is the result that is sent to the view
    'complete'      => 'true',
    'loadmethod'    => 'add',
    'contentpage'   => 'test_page/detail'   
);

$this->load->view('shared/master_app', $data);
现在,在视图中,您可以在此阵列上循环,如下所示:

foreach($record as $class => $names) {
    echo "<input type='text' value='" . $class . "'>";
    echo "<textarea>" . implode(', ', $names) . "</textarea>";
}
foreach($class=>$name记录){
回声“;
echo“”。内爆(',',$names)。“”;
}

您可以循环遍历名称并创建字符串或任何您需要的内容。如果您需要,我可以为您提供PHP代码…?当然可以。我对任何解决方案都持开放态度。你能给我你在$query中得到的数组吗?你可以循环遍历名称并创建一个字符串或任何你需要的东西。如果你需要,我可以给你PHP代码…?当然。我愿意接受任何解决方案。你能给我你在$query中得到的数组吗?不,我不想查询。我想在PHP中完成它。因为除了显示
名称
否之外,我还将
联接表
用于另一个目的,所以我不想查询。我想在PHP中完成它。因为除了显示执行
groupResults
CLASS
NAME
之外,我使用
JOINED表的另一个目的是什么?在控制器或视图中。我用CodeIgniter@ashura91您应该在将数据发送到viewAlway@ashura91之前执行它,如果数据作为对象返回,那么使用箭头符号而不是数组:)执行
groupResults
?在控制器或视图中。我用CodeIgniter@ashura91在将数据发送到viewAlway@ashura91之前,您应该执行它,如果数据作为对象返回,那么请使用箭头符号,而不是数组:)