根据ID列出来自不同表,组的数据

时间:2013-10-24 06:00:55

标签: php mysql database

我是MySQL的初学者。我有关于显示来自两个不同表(相同数据库)的数据的问题,并根据它们的ID列出它们。

  

最近,我正在做关于创建简单讨论板的项目   (聊天风格)功能,其他用户可以评论帖子。

我有两张桌子,

Shoutbox - >记录用户提交的讨论

  

ID |名称|文字|
1 |伊克巴尔|这是问题|
2 | Zizan |另一个问题|

评论 - >>记录来自其他用户的评论

  

ID |评论|
1 |回答Iqbal |
1 | Iqbal的另一个答案
2 |回答Zizan |

如何根据 Shoutbox 中的数据(根据其ID)显示评论

所以,它应该是这样的

  

讨论区

     

伊克巴尔:这是问题答案:答案伊克巴尔答案:伊克巴尔的另一个答案

     

Zizan:另一个问题答案:回答Zizan

3 个答案:

答案 0 :(得分:1)

试试这个

SELECT * FROM `Shoutbox`
LEFT JOIN `Comment` 
ON `Shoutbox`.ID = `Comment`.ID

当然,为了显示数据,您将在while

中执行此操作
while ( ... ) {

   echo $r['Name'] . ' : ' . $r['Text'];
   echo '<br />';
   echo 'Answer :' . $r['Comment'];

   echo '<br /> <br />';
}

修改

如果您对每个Shoutbox有多个答案,则需要执行以下操作。

注意查询中的更改

SELECT * FROM `Shoutbox`
RIGHT JOIN `Comment` 
ON `Shoutbox`.ID = `Comment`.ID

和以下代码

$finaleArray = array();
while ( $r = mysqli_fetch_array($result) ) {

   $id = $r['ID'];

   if ( !isset($finaleArray[$id]['question']) ) {
      $finaleArray[$id]['question'] = $r['Text'];
      $finaleArray[$id]['name'] = $r['Name'];
   }

   $finaleArray[$id]['answer'][] = $r['Comment'];
}

foreach( $finaleArray as $id => $a ) {
   echo $a['name'] . ' : ' . $a['question'];
   foreach($a['answer'] as $ans) {
      echo '<br />';
      echo 'Answer :' . $ans;
   }
   echo '<br /> <br />';
}

当然上面的代码中存在混淆,你应该问你是否有任何理解。

答案 1 :(得分:0)

怎么样:

SELECT * FROM Shoutbox
INNER JOIN Comment 
ON Shoutbox.ID = Comment.ID

答案 2 :(得分:0)

在Comment TABLE下创建另一个字段Shoutbox_id,同时在Comment表下插入值,在Comment TABLE&gt;&gt;中传递Shoutbox primay id Shoutbox_id

然后使用JOIN

SELECT * FROM `Shoutbox` as s
LEFT JOIN `Comment` as c
ON s.id = c.Shoutbox_id