我是MySQL的初学者。我有关于显示来自两个不同表(相同数据库)的数据的问题,并根据它们的ID列出它们。
最近,我正在做关于创建简单讨论板的项目 (聊天风格)功能,其他用户可以评论帖子。
我有两张桌子,
Shoutbox - >记录用户提交的讨论
ID |名称|文字|
1 |伊克巴尔|这是问题|
2 | Zizan |另一个问题|
评论 - >>记录来自其他用户的评论
ID |评论|
1 |回答Iqbal |
1 | Iqbal的另一个答案
2 |回答Zizan |
如何根据 Shoutbox 中的数据(根据其ID)显示评论?
所以,它应该是这样的
讨论区
伊克巴尔:这是问题答案:答案伊克巴尔答案:伊克巴尔的另一个答案
Zizan:另一个问题答案:回答Zizan
答案 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