我有两个表,我需要选择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
答案 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