2012-09-25 53 views
1

在我的网站上,用户可以更新和其他可更新,像往常一样像其他社交网站评论..编写更好的代码/查询

什么我做:

query = fetches first name, last name, user id, update id, update post UNION same details for the user who has logged in i.e /* Updates Of Current Logged In User + Updates Of People He Is Following */ 

loop { 
prints first name last name and update 
} 

后来我介绍了评论功能所以现在我要做的就是在循环中我称之为查询并再次征求意见运行一个循环..

loop { 
prints first name last name and update 

commentquery = fetches firstname, last name, user id, comment, of the particulat post 
    again loop { 
     prints first/last name of the person who commented, and his comment 
    } 
} 

现在根据我我想这可以用SQL查询来完成,当我检索帖子时,我可以随它一起获取评论,或者这是正确的方式?问题是当外部循环运行时,内部循环也会运行以获取适当的注释,那么我可以连接表来检索与帖子/更新相关的注释吗?

+0

给出代码,而不是描述为你的代码 – Gautam3164

+0

我没有要求修复我的代码,我只是想知道在循环中调用查询的逻辑是错误的,所以我可以将它与外部循环连接起来更新循环,并可以获取与帖子相关的评论/更新 –

+0

如果您只需要一个查询,则可以选择用户与帖子以及评论表之间的联接。不,在循环中查询并不差 - 这完全取决于您的效率指标。如果您的编码时间比几毫秒的执行时间更值得,请使用易于理解和维护的代码模型。 –

回答

1

如果没有您的数据库结构或实际的SQL,这是很难回答的,但我尽量推广。你所要做的应该是通过两个查询和一个循环的SQL来完成,如下所示。

编辑你的循环和重新执行查询。您可以一次性使用SQL获取所有这些数据,但是您将在每次调用中复制所有信息。可扩展性和可读性,我要坚持两个查询和两个循环

/** updated after op's comments **/ 

SELECT data, that, you, want, for, one, post 
FROM posts AS a 
INNER JOIN users AS b ON b.id = a.user_id 

loop over query results() { 

    /** output the post data **/ 

    /** Then select the users who have posted on this post **/ 
    SELECT a.comments, b.username 
    FROM comments AS a 
    INNER JOIN users AS b ON b.id = a.id 
    INNER JOIN posts AS c ON c.id = a.post_id AND c.post_id = '[post id value]' 
    ORDER BY a.date_posted; 

    loop comments here { 
     /** output comments here **/ 
    } 
} 
+0

这不是一个博客,它是一个网站,更新是循环,在同一页上我显示评论下面各自的职位 –

+0

好吧,我已经更新了这个例子来反映这个 – AlexP

0

我认为合并它只能查询有可能,但不是很好。

但是,如果我正确地理解你不喜欢的是,在循环中执行与differen WHERE子句的注释查询。你可以消除通过获取所有的意见进行全部更新,你都出现在一个查询前查询数据库的更新:

query = select all comments for all updates joined with usernames and whatnot 
loop{ 
    $comments[postid][] = data 
} 

之后,你的更新做你的正常查询和访问评论从预加载的数组而不是数据库。不知道这是否是更好的解决方案。好处是,只有一个查询需要更新,一个用于评论,而不是一个用于更新,一个用于每个更新的评论(如果有10个更新,则为2个查询,而不是11个)。不知道这种差异是否真的很大。

不利的一面是,你以前的代码更加明显,更容易阅读其他人。

相关问题