我遇到了“独特”的问题。我有两个表,一个用于客户端,第二个用于用户。第三个表是注释表。因此,当评论被添加到第三个表,发布人员ID和评论所关联的组织经理时,他的ID被存储。现在,当我必须显示评论时,我不知道如何获得适当的名称,因为它们存储在两个不同的表中。
关于如何做到这一点的任何想法?
我设法创建的一些代码:
$query="SELECT v_comments.v_comment_id, d_names.d_name,
v_comments.visit_reply, v_comments.just_date FROM v_comments
LEFT JOIN d_names ON v_comments.d_id = d_names.d_id
WHERE v_id = '$vid' and v_comments.s_id='$sid' ORDER BY v_comments.id DESC";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
echo "";
$i=0;
while ($i < $num) {
$reply=mysql_result($result,$i,"v_reply");
$replyid=mysql_result($result,$i,"v_comment_id");
$dname = mysql_result($result, $i, "d_name");
echo "";
echo "";
$i++;
}
答案 0 :(得分:1)
你可以做的是在评论表中设置一个名为 id 的字段。
然后在插入注释时在前面添加一个对应于用户类型的字母。例如:
客户:c5
用户:u5
然后当您显示评论时,只需将字母和数字分开,然后根据字母搜索相应的表格。
答案 1 :(得分:1)
您是否只需要将连接添加到另一个表,并选择其他名称字段?
如果另一个表名为“s_names”(我不得不猜测),这应该有效:
SELECT v_comments.v_comment_id, d_names.d_name, s_names.s_name,
v_comments.visit_reply, v_comments.just_date
FROM v_comments
LEFT JOIN d_names ON v_comments.d_id = d_names.d_id
LEFT JOIN s_names ON v_comments.s_id = s_names.s_id
WHERE v_id = '$vid' and s_id='$sid' ORDER BY v_comments.id DESC;
答案 2 :(得分:1)
这基本上是连接操作在数据库中的作用。 假设您有一个用于客户端的表,其中包含一个主键“ClientId”,一个字符串属性“Name”,以及其他一些在此问题中不重要的信息。
同样,您还有另一个'Managers'表,其中包含主键'ManagerId',以及他/她的名称属性'Name'。
您还有一个评论表,其中包含您所描述的'ClientId','ManagerId'和'Comment'。
现在显示与您相关的注释的实际名称可以使用以下SQL
SELECT Clients.Name, Managers.Name, Comments.Comment
FROM Comments
INNER JOIN Clients
ON Clients.ClientId = Comments.ClientId
INNER JOIN Managers
ON Managers.ManagerId = Comments.ManagerId