加入两个数据库表并将结果输出到HTML表

时间:2013-04-17 12:14:08

标签: php mysql inner-join

对于我目前的进度,我需要创建一个类似下面的表

pid cid eid name value

1    1   4   name  ab
2    1   5   amt    2
3    1   4   name   cd
4    1   5   amt    4

而不是像这样创建表

pid cid  name amt

1    1    ab    22
2    1     cd    4

无论如何使用以下代码

创建了表格
<table width="1204" height="100" border="1">
  <tr>
  <?php  $sqlname="Select * From  elements  where cat_id='1' order by e_id ";   
           $resname=mysql_query($sqlname);
           while($rowname=mysql_fetch_array($resname)){

          ?>
    <td colspan="2"><?php echo $rowname['lable_name']; ?></td>
  </tr>
  <tr>
  <?php $i=0; 
  $sqlprolist="select value from products_list where name='".$rowname['lable_name']."' and e_id='".$rowname['e_id']."'";
          $resprolist=mysql_query($sqlprolist);
          while($rowprolist=mysql_fetch_array($resprolist)){
              $i++;

         ?>
    <td><?php echo $rowprolist['value'];?></td>
    <?php if($i%8==0){
        ?>
        <tr></tr>
        <?php }?>
    <?php }?>
  </tr>
  <?php }?>
</table>

但我不知道从表中检索数据进行处理。

谢谢

通过跟随martin创建如下表所示的表

pid cid eid name  value

12   1  4  name    abc
1    1  4  name    cde
13   1  5  code    12
2    1  5  code    14

如何分割数据 像

name code breeder quality size

abc   12   121     121     22
acfd  34   164     22      22

感谢

1 个答案:

答案 0 :(得分:0)

如果没有看到数据库结构,很难帮助您。请与我们分享,您可能会得到更好的答案。

无论如何,我想你有两张表,elementsproducts_list。您似乎需要在value表中查找products_list表中每行的elements列。您可以使用单个SQL查询将这些表合并到一个结果集中:

SELECT e.p_id, e.cat_id, e.e_id, e.lable_name, p.value
FROM elements e, products_list p
WHERE e.cat_id='1' AND 
p.name = e.lable_name AND p.e_id = e.e_id
ORDER BY by e.e_id

请注意e.p_id只是猜测,您还没有与我们分享“pid”列值来自哪里。如果您确实需要使用p.name = e.lable_name匹配行,也不确定。如果e_id是主键,则您可能仅使用p.e_id = e.e_id

cid列有什么意义?如果它确实是数据库中的cat_id列,那么为什么在HTML表中需要它,如果你将元素过滤到cat_id=1呢?这是故意的吗?

现在,您可以获取查询结果,并将其逐行输出到HTML表格,如:

<table width="1204" height="100" border="1">
  <tr>
    <th>pid</th>
    <th>cid</th>
    <th>eid</th>
    <th>name</th>
    <th>value</th>
  </tr>
  <?php

    $sqlname =
        "SELECT e.p_id, e.cat_id, e.e_id, e.lable_name, p.value ".
        "FROM elements e, products_list p ".
        "WHERE e.cat_id='1' AND ".
        "p.name = e.lable_name AND p.e_id = e.e_id".
        "ORDER BY e.e_id";   
    $resname = mysql_query($sqlname);
    while ($row = mysql_fetch_array($resname))
    {
  ?>
  <tr>
    <td><?php echo $row['p_id'];?></td>
    <td><?php echo $row['cat_id'];?></td>
    <td><?php echo $row['e_id'];?></td>
    <td><?php echo htmlspecialchars($row['lable_name']);?></td>
    <td><?php echo $row['value'];?></td>
  </tr>
  <?php 
    }
  ?>
</table>

这只是第一步。这不太可能是正确答案。但我希望它能帮助你理解,你想做什么以及你的问题。

这不是生产级代码。但我希望尽可能少做一些更改,以便您可以看到代码的实际变化是什么。

另请注意,mysql_函数已弃用。请参阅PHP documentation page上的大红框。