分组数据基于另一个表中的父级

时间:2014-06-26 11:25:13

标签: php mysql sql codeigniter

我面临一个艰难的条件,我知道它真的很难,但我没有条件解决它。

我想首先向你展示一些db结构

Table td_service

|-------------|---------------|---------------|
| service_id  | service_title |   pump        |
|---------------------------------------------|
|   1         |  Marine       |     1,2       | 
|---------------------------------------------|
|   2         |  gas & Oil    |     1,3       | 
|---------------------------------------------|


Now table td_product

|-------------|---------------|---------------|
| product_id  | product_title |   category_id |
|---------------------------------------------|
|   1         |  DB PUMP      |     1         |
|---------------------------------------------|
|   2         |  CG PUMP      |     2         |
|---------------------------------------------|
|   3         |  DH PUMP      |     2         |
|---------------------------------------------|



and at last, the td_category table

|-------------|---------------|
| category_id | category_title|
|-----------------------------|
|   1         |  Industry P   |
|-----------------------------|
|   2         |  Water Supply |
|-----------------------------|
|   3         |  Extraction   |
|-----------------------------|

现在表td_service中的列泵是一个字符串,其中包含用逗号分隔的泵的id。

现在,我可以从每个服务中获取泵的列表并像这样显示它们

$pump_list = $this->autoload_model->get_data_from_table("td_service","*","service_id = '$id'")->result_array();

$pump_list[0]['pump'] will have value 1,2


to list the pumps i can try explode operatipon on $pump_list[0]['pump']

$p_list = array();
$p_list = explode(",",$pump_list[0]['pump']);
foreach($p_list as $p)
   {
     $pump_info = $this->autoload_model->get_data_from_table("td_product","*","product_id = '$p'")->result_array();
     echo $pump_info[0]['product_title'];
    }

现在我想以这种方式显示泵名称

Industry P
-----------------------
DB PUMP, CG PUMP

当我搜索特定的服务ID ..

我不能以这种分组方式显示数据..

还有一件事,我一直被严格要求不要改变数据库结构。就像有些人可能建议制作另一张表显示服务和泵之间的关系,但我不能这样做因为我受到限制。

0 个答案:

没有答案