2010-07-13 123 views
1

我有两个表,我需要选择所有用户名为$userid的行,然后对它们进行排序。我试图使用加入,但我甚至无法真正开始如何正确使用。任何人都可以向我指出正确的方向,以便如何将这些内容合并到一个查询中?加入2个mysql查询

$result1 = mysql_query("SELECT * FROM paypal_sub_info 
      WHERE userid='$THEuserid' ORDER BY cur_time DESC"); 
$result2 = mysql_query("SELECT * FROM paypal_pay_info 
      WHERE userid='$THEuserid' ORDER BY cur_time DESC"); 

while($row = mysql_fetch_array($result1)){ 
    echo $row['txn_type']; 
} 

解决方案:

SELECT * 
FROM paypal_sub_info sub,paypal_pay_info pay 
WHERE pay.userid = '$THEuserid' 
     AND sub.userid = '$THEuserid' 
ORDER BY pay.cur_time DESC,sub.cur_time DESC 

回答

3

试试这个:

SELECT * FROM paypal_sub_info sub, paypal_pay_info pay 
WHERE pay.userid='$THEuserid' AND sub.userid='$THEuserid' 
ORDER BY pay.cur_time DESC, sub.cur_time DESC 

如果你只是想 'txn_type',你可以把一个SELECT pay.txn_type AS txn_type

+1

说这是无效的。有一个常用名称的几个字段,cur_time是一个... – Derek 2010-07-13 06:16:49

+0

@Derek:因为'cur_time'列在两个表中,所以您需要选择ORDER BY应该使用哪个表并将aliias添加到ORDER BY – 2010-07-13 06:21:05

+0

我使用这个解决方案,除了将ORDER BY改为“ORDER BY pay.cur_time DESC,sub.cur_time DESC”谢谢! – Derek 2010-07-13 06:29:05

1

我相信你想:

SELECT field1, field2, ... FROM paypal_sub_info WHERE userid='$THEuserid' 
    UNION 
    SELECT field1, field2, ... FROM paypal_pay_info WHERE userid='$THEuserid' 
    ORDER BY cur_time DESC 
+0

假定列(至少是它们的数据类型)的顺序相同。我真的不认为这是什么OP后,我自己 – 2010-07-13 06:19:33

+0

是的,不同数量的列,给了我这个错误。 – Derek 2010-07-13 06:20:51

+0

好点 - 我会在下一次键盘之前让大脑参与进来。我认为这个操作可能是在联合国之后,因为 - 给了ORDER BY(可能是错误的)。 – 2010-07-13 06:23:47

1

用途:

SELECT psi,*, ppi.* 
    FROM PAYPAL_SUB_INFO psi 
    JOIN PAYPAL_PAY_INFO ppi ON ppi.userid = psi.userid 
    WHERE psi.userid = $THEuserid 
ORDER BY psi.cur_time DESC, ppi.cur_time DESC 
0

所以第一关考虑使用的mysqli对于任何严肃的项目。 OMG小马的答案是我会建议如何做,认为你不应该在select子句中分别指定alias.wildcard字段。实际上指定你正在尝试获取的字段而不是*是最好的做法,虽然我们在懒惰时都会使用很多*。

Will A的回答让我感到微笑,因为它在技术上是你要求的,但不是我期望的你想要的。

您是否更详细地描述了您要提取的数据,或者仅仅是一个示例,因为您在计算连接时遇到困难?

-J

+0

你必须指定别名,因为这两个表中都有一个'cur_time'列 - 没有别名,你会得到一个“模棱两可的列引用”错误。 – 2010-07-13 06:32:06

+0

我真的得到... – Derek 2010-07-13 06:34:23

+0

我同意有一个模棱两可的列,但我只是在MySQL 5.0.51/PHP 5.2.4上运行测试:print_r(mysql_fetch_assoc(mysql_query('select * from portfolio p join portfolio_images pi on p .id = pi.portfolio_id')));用的模式:。 图集 - 编号,标题,CUSTOMER_NAME,类型,描述 portfolio_images - 编号,标题,portfolio_id,路径描述 并获得两个*和P相同的结果*,PI * 阵列 ( [ ID] => 1 [标题] =>宽 [CUSTOMER_NAME] => [型] => [描述] => [portfolio_id] => 1 [路径] =>静态/图像/ from_pp/curvey_bush_1 。jpg ) please edificate me :-) – umassthrower 2010-07-13 07:25:40