加入2个mysql查询

时间:2010-07-13 06:10:08

标签: php mysql join

我有两个表,我需要选择userid为$userid的所有行,然后对它们进行排序。我试图使用join但我甚至无法真正开始如何正确使用它。任何人都可以指出我如何将这些成为一个查询的正确方向吗?

$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 

4 个答案:

答案 0 :(得分: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 :(得分: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

答案 2 :(得分: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

答案 3 :(得分:0)

首先考虑使用mysqli进行任何严肃的项目。 OMG Ponies回答是我建议的方法,认为您不必在select子句中单独指定alias.wildcard字段。实际指定你试图获取的字段而不是*也是一种最佳实践,尽管我们在懒惰时都会使用*。

A的答案会让我微笑,因为从技术上讲,这是你所要求的,尽管不是我所期望的。

您是否对要提取的数据有更详细的描述,或者这仅仅是一个示例,因为您在查找联接时遇到了问题?

-J