2013-03-03 117 views
0

我有两个表:tableAtableB我想打印tableB的列值。 我的表结构是如下:php循环从第二个表中获取值

Table A 
-id--------Name----- 
1   A 
2   B 
3   C 
4   D 
-------------------- 


Table B 

tableB_id-----------tableA_id-------------value------- 
1      1     68 
2      1     94 
3      1     97 
4      1     88 
5      1     93 
6      1     69 
7      1     95 
8      2     68 
9      2     94 
10      3     68 
11      4     68 
12      4     95 
------------------------------------------------------ 

最终输出需要如以下与逗号分隔

id------Name----------value----------------------------------------- 
1  A  68,94,97,88,93,69,95 
2  B  68,94 
3  C  68 
4  D  68,95 

我尝试下面的代码值:

这里每个ID在tableA将会有多个print_r($arr1)命令表示为FIRST。在代码中它正在打印重复的值,但重新命名为SECOND的命令正在获取正确的值。

我的问题是如何避免在FIRST代码部分的重复值

<?php 
$rs = mysqli_query($dbc,"SELECT * FROM `tableA` limit $offset,$rows"); 
$items = array(); 
$a=0; 
while($row1 = mysqli_fetch_object($rs)) 
{ 
    $qry1 = mysqli_query($dbc,"SELECT tableB.value FROM tableA ,tableB WHERE tableA.`tableA_id`=tableB.`tableA_id` AND tableA.`tableA_id`='".$row->id."'");  
    $i=0; 
    while($row2 = mysqli_fetch_assoc($qry1)) 
    { 
    if($row2['id']=$row1->id) 
    { 
     $arr1 = $row2['value']; 
    } 
    print_r($arr1); // SECOND 
    $i++; 
    } 
    print_r($arr1); // FIRST 
    array_push($items, $row1); 
} 
?> 
+0

[**请不要在新代码**中使用'mysql_ *'函数](http://bit.ly/phpmsql)。他们不再被维护[并被正式弃用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**红框**](http://j.mp/Te9zIL)?学习[*准备的语句*](http://j.mp/T9hLWi),并使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [这篇文章](http://j.mp/QEx8IB)将帮助你决定哪个。如果你选择PDO,[这里是一个很好的教程](http://j.mp/PoWehJ)。 – h2ooooooo 2013-03-04 07:14:48

回答

0

我认为GeoffK与GROUP_CONCAT合作是正确的。试试这样:

SELECT tableA.id AS id, 
     tableA.name AS name, 
     GROUP_CONCAT(tableB.value) AS value 
FROM tableA 
    JOIN tableB 
    ON tableA.id = tableB.tableA_id 
GROUP BY tableA.id 
+0

我使用查询以及组concat.The问题是group_concat值必须被引用到另一个表来获取id的名称,这就是为什么我想要避免group_concat – user1249796 2013-03-03 21:52:46

+0

你可以更新你的问题,以显示一个完整的例子你需要什么,包括第三张桌子? – 2013-03-03 22:05:39

0

我不知道如果我理解正确的问题 - 但我想你可能会寻找的是GROUP_CONCAT

+0

是的,我可以使用GROUP_CONCAT,但我可能aafter后我得到逗号分隔,我需要参考一个更多的表,以获得id的名称..是否有可能? – user1249796 2013-03-03 21:00:37

+0

任何机构可以帮忙吗? – user1249796 2013-03-03 21:20:22

相关问题