2011-03-29 61 views
0

好吧我有问题。我有一个社交网站,并有一些代码只会从朋友那里调用状态。我希望它调用朋友的状态以及登录用户的身份。关于工会的问题

表:成员,朋友,状态

成员 - 处理

朋友 - 用户名,朋友

状态 - 处理,类型(公共或朋友)

这里是代码,将显示用户朋友的最新状态。

$shawing = "SELECT * FROM status JOIN friends ON status.Handle = friends.Friend where friends.Username='$members[Handle]' and status.Type='friends' ORDER by status.Id DESC" or print mysql_error();

$会员[拉手]调用由包括识别谁在登录的用户。

有人告诉我,一个联盟的工作,但我只能够使一个状态显示出来,我现在的代码只有一个结果。

基本上,我想从人的朋友列表中获取用户名列表,并添加用户登录的用户名,并仅显示来自朋友部分的状态与这些用户名。

另外,如果我可以得到代码的结构,那将是非常好的,因为我是全新的JOIN和UNION。我明白了,当然,我只是不明白它是如何正确设置的。

+0

此外,我很有必要提一下,我在代码之后有一段时间,并且它在其他情况下可以工作。 – Brad45 2011-03-29 00:20:59

+0

因为我在努力学习自己? – Brad45 2011-03-29 00:24:05

+0

为什么你没有告诉我们你实际上已经尝试了什么? http://dev.mysql.com/doc/refman/5.1/en/union.html – zerkms 2011-03-29 00:26:33

回答

1

您使用的UNION和JOIN越多,开始积累的开销就越多。一旦您尝试按10,000条记录进行缩放,您将开始在服务器缓慢查询日志中看到此查询。

我建议保持简单并运行两个查询。
第一次查询:获取用户状态
第二查询:获取用户好友状态

第一个查询应该是非常快,你最有可能使用的用户的用户ID(在表的主键,是吗? )。最好的办法是简单地保持简单。

+0

感谢您的建议,但是如何在不使用JOIN的情况下获得用户朋友的列表?我有两个区域。公共区域工作正常,但Friendz区域是我正在处理的代码。我不习惯JOIN或UNION,因为我没有使用过它们。 – Brad45 2011-03-29 00:35:28

+0

我已经有了这些表格,除了他们被称为成员和朋友。我只是不知道如何限制我的结果,只显示用户或他的朋友提交的状态。 – Brad45 2011-03-29 01:06:01