php - 每隔一个选定项目输出 4 个选定项目

标签 php mysql select

大家好!我需要从 mysql 数据库中选择正确数量的特定项目。

这是我的架构 - http://i.stack.imgur.com/Jr7ky.jpg

这是我的查询:

$servBasketData = mysql_query("SELECT services_basket.sbasket_id, system_countries.country_name, system_services.service_name, system_podservice.podservice_name, system_packets.packet_name, system_packets.price_common, system_packets.price_econom, system_packets.price_standart, system_packets.price_vip, packets_basket.sbasket_id
    FROM system_services INNER JOIN (system_podservice INNER JOIN (system_packets INNER JOIN (system_countries INNER JOIN (services_basket INNER JOIN packets_basket ON services_basket.sbasket_id = packets_basket.sbasket_id) ON system_countries.country_id = services_basket.country_id) ON system_packets.packet_id = packets_basket.packet_id) ON system_podservice.podservice_id = services_basket.podservice_id) ON system_services.service_id = services_basket.service_id ORDER BY services_basket.sbasket_id ASC;");

    while ($result = mysql_fetch_array($servBasketData)) {
        echo "<tr><td><center>".$result['sbasket_id']."</center></td><td><center>".$result['country_name']."</center></td><td><center>".$result['service_name']."</center></td><td><center>".$result['podservice_name']."/<center></td><td>";
                     echo "<tr><td><center>".$result['packet_name']."</center></td><td><center>".$result['price_common']."</center></td><td><center>".$result['price_econom']."</center></td><td><center>".$result['price_standart']."</center></td><td><center>".$result['price_vip']."</center></td>";


    }

此代码返回如下数据:

1 |俄罗斯 |服务1 | podservice1 | 数据包1 |价格_普通_20 |经济价格30 |价格_标准_40 | Price_vip_50

1 |俄罗斯 |服务1 | podservice1 | 数据包2 |价格_普通_30 |经济价格40 |价格_标准_50 | Price_vip_60

1 |俄罗斯 |服务1 | podservice1 | 数据包3 |价格_普通_40 |经济价格50 |价格_标准_60 | Price_vip_70

1 |俄罗斯 |服务1 | podservice1 | 数据包4 |价格_普通_50 |经济价格 60 |价格_标准_70 | Price_vip_80

<小时/>

2 |乌克兰 |服务1 | podservice1 | 数据包1 |价格_普通_20 |经济价格30 |价格_标准_40 | Price_vip_50

2 |乌克兰 |服务1 | podservice1 | 数据包2 |价格_普通_30 |经济价格40 |价格_标准_50 | Price_vip_60

2 |乌克兰 |服务1 | podservice1 | 数据包3 |价格_普通_40 |经济价格50 |价格_标准_60 | Price_vip_70

2 |乌克兰 |服务1 | podservice1 | 数据包4 |价格_普通_50 |经济价格 60 |价格_标准_70 | Price_vip_80

<小时/>

...

所以,这不是我需要得到的。我需要获取这样的数据:

1 |俄罗斯 |服务1 | podservice1 |

数据包1 |价格_普通_20 |经济价格30 |价格_标准_40 | Price_vip_50

数据包2 |价格_普通_30 |经济价格40 |价格_标准_50 | Price_vip_60

数据包3 |价格_普通_40 |经济价格50 |价格_标准_60 | Price_vip_70

数据包4 |价格_普通_50 |经济价格 60 |价格_标准_70 | Price_vip_80

<小时/>

2 |乌克兰 |服务1 | podservice1 |

数据包1 |价格_普通_20 |经济价格30 |价格_标准_40 | Price_vip_50

数据包2 |价格_普通_30 |经济价格40 |价格_标准_50 | Price_vip_60

数据包3 |价格_普通_40 |经济价格50 |价格_标准_60 | Price_vip_70

数据包4 |价格_普通_50 |经济价格 60 |价格_标准_70 | Price_vip_80

<小时/>

所以我需要删除重复的数据。 我怎样才能做到这一点? (没关系 - 通过 php 或 mysql)

谢谢。

最佳答案

第一个和第二个输出之间的唯一区别是,第二个输出不包含 sbasket_idservice_namepodservice_name

您的问题可以使用 php 来解决,根据 sbacket_id 何时更改来控制输出内容和时间。

简单示例(请原谅错误)

    $servBasketData = mysql_query("

    SELECT services_basket.sbasket_id,
           system_countries.country_name,
           system_services.service_name,
           system_podservice.podservice_name,
           system_packets.packet_name,
           system_packets.price_common,
           system_packets.price_econom,
           system_packets.price_standart,
           system_packets.price_vip,
           packets_basket.sbasket_id
    FROM system_services
    INNER JOIN (system_podservice
                INNER JOIN (system_packets
                INNER JOIN (system_countries
                INNER JOIN (services_basket
                INNER JOIN packets_basket ON 
    services_basket.sbasket_id = packets_basket.sbasket_id) ON 
    system_countries.country_id = services_basket.country_id) ON 
    system_packets.packet_id = packets_basket.packet_id) ON 


       system_podservice.podservice_id = services_basket.podservice_id) ON 
        system_services.service_id = services_basket.service_id
        ORDER BY services_basket.sbasket_id ASC;");

        $previous_sbasket_id = -1; 
        while ($result = mysql_fetch_array($servBasketData)) 
        {

    if($previous_sbasket_id != $result['sbasket_id'])
    {
//echo here the header if needed
echo "<tr><td><center>".$result['sbasket_id']."</center></td><td><center>".$result['country_name']."</center></td><td><center>".$result['service_name']."</center></td><td><center>".$result['podservice_name']."/<center></td><td>";

    }

//echo here everything else

    echo "<tr><td><center>".$result['packet_name']."</center></td><td><center>".$result['price_common']."</center></td><td><center>".$result['price_econom']."</center></td><td><center>".$result['price_standart']."</center></td><td><center>".$result['price_vip']."</center></td>";

    $previous_sbasket_id= $result['sbasket_id'];

    }

关于php - 每隔一个选定项目输出 4 个选定项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26324126/

相关文章:

javascript - Access-Control-Allow-Headers 不允许 X-Requested-With

php - SQL命令无法获取单词相关句子

android - 左外连接 sql 不工作

html - 选择元素时如何更改选择元素的背景颜色?

php - MVC : Which Model to place my code in?

php - 由于身份验证值无效,Authorize.net CIM 用户身份验证失败

php - 从 Mysql 获取随机值

mysql - 结果差异(MySQL 5.7 与 MySQL 8.0)

php - 运行插入查询获取 id 并使用 id 更新另一个表

mysql SELECT 与 SUBSTRING、LOWER 和 REPLACE 命令