Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 MYSQL查询-基于同一表中另一列中的不同值返回一列中所有值的简单方法?_Php_Mysql_Sql_Database_Pdo - Fatal编程技术网

Php MYSQL查询-基于同一表中另一列中的不同值返回一列中所有值的简单方法?

Php MYSQL查询-基于同一表中另一列中的不同值返回一列中所有值的简单方法?,php,mysql,sql,database,pdo,Php,Mysql,Sql,Database,Pdo,我对这个有点挠头,我相信这是很基本的,但有点 如果我有一个两列的表,它的结构基本上如下: 表:每家门店的客户数量 其中,pid是唯一的键,存储id可以有多个重复值: 例如 对于将所有PID捕获到一个不同的store_id但忽略值为0的store_id的结果,正确的查询是什么 这容易做到吗?我觉得这太容易了 我想我可以在两个语句中完成这项工作,首先获取所有不同的store_id,将结果保存到一个数组中,然后循环通过该数组对每个store_id执行查询并保存结果 但是,在一个mysql查询中有没有更

我对这个有点挠头,我相信这是很基本的,但有点

如果我有一个两列的表,它的结构基本上如下:

表:每家门店的客户数量

其中,pid是唯一的键,存储id可以有多个重复值:

例如

对于将所有PID捕获到一个不同的store_id但忽略值为0的store_id的结果,正确的查询是什么

这容易做到吗?我觉得这太容易了

我想我可以在两个语句中完成这项工作,首先获取所有不同的store_id,将结果保存到一个数组中,然后循环通过该数组对每个store_id执行查询并保存结果

但是,在一个mysql查询中有没有更简单的方法来完成这项工作

理想情况下,在单个查询中,我可以得到如下结果:

[500] => Array(
   [0] => 1,
   [1] => 2,
   [2] => 3
   ...
), 
[505] => Array(
   [0] => 4,
   [1] => 5
)
等等?

我想你只是想要一个团体:

我想你只是想要一个团体:


您不想要这样的东西吗:选择pid,store\u id从其中store\u id>0按store\u id分组

这将对在该存储id下具有不同存储id的所有PID进行分组


这可能不是您想要的确切查询,但我肯定认为您可以通过GROUP BY来实现这一点。

您不想要这样的内容:选择pid,store\u id FROM WHERE store\u id>0 GROUP BY store\u id

这将对在该存储id下具有不同存储id的所有PID进行分组


这可能不是您想要的确切查询,但我肯定认为您可以通过GROUP BY实现这一点。

我假设您使用php是因为调试输出

我认为您只需要将结果堆叠在一个关联数组中,其中键是store_id。此示例使用mysqli_查询,但您可以将其调整为pdo

$results_by_store_id = array();
$rs = mysqli_query("select * from customer_per_store where store_id <> 0");
while($r = mysqli_fetch_assoc($rs)) {
    $results_by_store_id[$r['store_id']][] = $r['pid'];
}

print_r($results_by_store_id);

我假设您使用php是因为调试输出

我认为您只需要将结果堆叠在一个关联数组中,其中键是store_id。此示例使用mysqli_查询,但您可以将其调整为pdo

$results_by_store_id = array();
$rs = mysqli_query("select * from customer_per_store where store_id <> 0");
while($r = mysqli_fetch_assoc($rs)) {
    $results_by_store_id[$r['store_id']][] = $r['pid'];
}

print_r($results_by_store_id);

听起来您试图使用错误的工具来完成此工作,如果您使用的是GROUP BY variant,您仍然需要将数据后置处理到数组中

您想要的查询非常简单:

  SELECT store_id, pid
    FROM table t
   WHERE store_id != 0
然后使用您选择的语言运行生成的assoc数组,并从中构建所需的数组。。下面是一些php代码:

$processed = [];
foreach($fetched as $row){
  $processed[$row['store_id']][] = $row['pid']
}

听起来您试图使用错误的工具来完成此工作,如果您使用的是GROUP BY variant,您仍然需要将数据后置处理到数组中

您想要的查询非常简单:

  SELECT store_id, pid
    FROM table t
   WHERE store_id != 0
然后使用您选择的语言运行生成的assoc数组,并从中构建所需的数组。。下面是一些php代码:

$processed = [];
foreach($fetched as $row){
  $processed[$row['store_id']][] = $row['pid']
}