php - 交叉引用同一个表中的2个字段

标签 php mysql sql codeigniter

我正在用 PHP(实际上是 codeigniter)+MYSQL 开发一个应用程序...我会尽量让它简单

我正在产品表上进行选择,因此我得到以下结果:

color        size        quantity
red          s           2
red          m           3
red          l           4
red          xl          1
blue         s           1
blue         m           0
blue         l           0
blue         xl          1

我需要这样显示结果

color        s        m        l        xl
red          2        3        4        1
blue         1        0        0        1

有什么想法吗??? SQL 或 PHP 都可以...

提前致谢。

最佳答案

诚然,在看到其他帖子直接从数据库进行分组后,这种方法似乎相当蹩脚。但是,您可以使用 PHP 来格式化数据,方法是将每种颜色存储在其自己的数组中,然后从那里对其进行迭代:

<?php

$link = mysqli_connect('localhost', 'user', 'pass', 'database');

$q = 'SELECT * FROM product ORDER BY color';
$result = mysqli_query($link, $q);

$color_array = array();

while ($row = mysqli_fetch_array($result)) {

    $color = $row['color'];
    $size = $row['size'];
    $quantity = $row['quantity'];

    $color_array[$color][$size] = $quantity;

}

foreach ($color_array AS $color_key => $color_item) {

    print $color_key."\t".$color_item['s']."\t".$color_item['m']."\t".$color_item['l']."\t".$color_item['xl']."\n";

}

编辑:

我在您的评论中看到您可能有 1 到 6 种尺寸。我原来的代码并不能真正解决这个问题,所以我对其进行了一些修改,以从数组中读取大小,然后如果在数据库中找到它们,则将其打印出来。

<?php

$link = mysqli_connect('localhost', 'user', 'pass', 'database');

$size_array = array('s', 'm', 'l', 'xl', 'xxl', 'xxxl');

$q = 'SELECT * FROM colors ORDER BY color';
$result = mysqli_query($link, $q);

$color_array = array();

while ($row = mysqli_fetch_array($result)) {

    $color = $row['color'];
    $size = $row['size'];
    $quantity = $row['quantity'];

    $color_array[$color][$size] = $quantity;

}

foreach ($color_array AS $color_key => $color_item) {


    print "\n".$color_key."\t";

    foreach ($size_array AS $size) {
        print isset($color_item[$size]) ? $color_item[$size]."\t" : "\t";
    }

}

关于php - 交叉引用同一个表中的2个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21947770/

相关文章:

php - Wordpress 主题二十十七 - 4k 显示的标题图像

java - 测试 View 是否存在,但我的方法返回 false - 它应该返回 true

php - 从文本文件 PHP 或 LINUX 返回行范围

mysql - Web.Config 错误 - 在 GoDaddy 上访问 MySQL 数据库

mysql - 1052 - 字段列表中的列 'typeid' 不明确

mysql - 单个 SUMIF 函数中的多个条件

java - sql 文件中的 ScriptStatementFailedException

sql - 我无法弄清楚的 PostgreSQL 错误

php - 使用 PHP 从 CSV 文件中删除重复项

php - 将数据连接传递给 PHP 类/方法的推荐方法?