2011-09-30 66 views
0

我搜索了四处,似乎无法理解如何使此工作。至少,不是我写代码的方式。有什么麻烦做IM正在改变这一点:DB选择两个表格

// ... 
$sql3 = new db; 
$sql3->db_Select(DB_TABLE_ROSTER_TEAM_MEMBERS, "*", "team_id = ".intval($row1['team_id'])." ORDER BY member_team_order"); 

while($row3 = $sql3->db_Fetch()) { 
// ... 

...的东西由列status_order,它位于一个不同的表DB_TABLE_ROSTER_MEMBER_STATUS的订单。所以基本上我试图在同一个SELECT查询中包含2个表格,以便我可以更改ORDER BY。任何人都可以解释这是如何完成的?任何帮助将不胜感激。谢谢。

UPDATE

我要去尝试,并解释这是尽我所能。希望有人能够以我能理解的方式向我解释。

默认情况下,此代码旨在抓取用户并将它们放置在各自的“team_id”中,然后通过可选下拉框对其进行排序,以允许我更改顺序。但是,订购成员的部分不起作用,所以我决定让它根据位于另一个表中的成员状态自动排序。另一张表包含团队名称和团队订单,以及目前不需要的其他数据。我甚至不知道这是否可能。

还有一个代码可能会有所帮助,因为它显示了表的结构。这正是我提到的网站上看到的名称的颜色。

希望我已经帮助解释了一点。

和其他的一些由Johan

这里要求的是两个表的结构。

roster_team_members字段:

member_id 
member_name 
team_id 
team_name 
game_id 
game_name 
member_team_status 
text_color 
member_team_order 

roster_member_status字段:

status_id 
status_name 
text_color 
status_order 
display 

㈣决定固定手动构件顺序。 iv在调试时发现错误。如果我无法弄清楚如何解决它另一个问题。感谢大家的帮助。 iv只是决定走另一条应该更容易的路线。

+0

你能否提供一些信息,首先查询除DB_TABLE_ROSTER_MEMBER_STATUS之外的其他表以及另一个表与DB_TABLE_ROSTER_MEMBER_STATUS相关的信息? –

+0

DB_TABLE_ROSTER_TEAM_MEMBERS包括用户,用户团队和其他一些人,但是我并不需要它来排序。在DB_TABLE_ROSTER_MEMBER_STATUS中有成员排名和排序顺序id喜欢排序。我不知道如何回答你的问题。但是如果你去这里 - http://teamdtk.com/e107_plugins/jbroster_menu/jbroster.php,看看例如队2,id喜欢它由位于DB_TABLE_ROSTER_MEMBER_STATUS表中的小队命令。 – Sarge88

+0

Sarge88,欢迎来到stackoverflow。如果你想获得高质量的答案,你将不得不写出一个高质量的答案。在这种情况下,最好的方法是:A:描述所涉及的表格**使用ascii art **,B:描述你想要的输出**再次使用ascii art ** C:告诉我们很短的原因你想要这个和D:给我们提供您尝试过的并且失败的查询。如果你这样做,100%的正确答案应该在几分钟内出现。 – Johan

回答

0

你的db_select()方法是什么样的?你在使用Drupal吗?

你的原始SQL查询会是这个样子:

SELECT table1.* FROM table1, table2 WHERE table1.link_column = table2.link_column AND table1.team_id = 'Your team ID' ORDER BY table2.member_team_order 

没有确切知道你的db_select()方法是如何工作的,我不能告诉你到底如何做到这一点。

+0

即时通讯使用称为E107的CMS,我仍然是新的PHP,所以我很困惑你的意思是由DB_Select方法。我在哪里可以找到这个? – Sarge88

+0

'db_Select()'方法在'db'类中定义。当你做'$ sql3 = new db;'你正在创建一个名为'db'的类的新实例,并且当你执行'$ sql3-> db_Select()'时,你正在调用一个名为'db_Select()'的方法对象'$ sql3',它有一个'db'类。在代码中的某处,是否有一堆代码被包装在如下所示的内容中:class db {... code here ...}? – DaveRandom

+1

-1使用隐式连接,放弃反模式,退出1989年,并使用显式连接。 – Johan

0

尝试此查询:

select a.*,b.rank 
from DB_TABLE_ROSTER_TEAM_MEMBERS a INNER JOIN DB_TABLE_ROSTER_MEMBER_STATUS b 
ON a.member_id = b.member_id 
order by b.rank; 

我不得不作出猜测,DB_TABLE_ROSTER_TEAM_MEMBERS和DB_TABLE_ROSTER_MEMBER_STATUS被称为“member_id”,并且你希望在DB_TABLE_ROSTER_MEMBER_STATUS排名由列之间的连接柱称为'等级'。

+0

我甚至不知道从哪里开始添加这个笑声。我用来简单的db_select命令。来自并经过和混淆。即时新闻我知道,但我尽我所能学习这些东西,可悲的是我不了解这一点。让我感到愚蠢lol – Sarge88

0

为了连接两个表,您使用join子句。

喜欢的东西:

SELECT booking.`date`, customer.name 
FROM booking 
INNER JOIN customer ON (customer.id = booking.customer_id) 
WHERE customer.name = 'Sarge' 
ORDER BY booking.`date` DESC 

如果你有表具有相同的布局,你可以使用一个UNION

SELECT customer_USA.name, customer_USA.country 
    FROM customer_USA 
UNION ALL 
    SELECT customer_NL.name, customer_NL.country 
    FROM customer_NL 

这将合并一个大结果集中两个表的所有记录。

我会给你正确的查询你的情况,但我不知道你想要什么,你提供的链接需要太多的研究,杀死拼图的乐趣。

+0

我认为你所寻找的信息在上面。希望。即时通讯代码淹没与代码被回答,所以即时通讯仍然试图把我的头围绕所有这一切。 – Sarge88