加入2个mysql查询
我有两个表,我需要选择所有用户名为$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
试试这个:
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
我相信你想:
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
假定列(至少是它们的数据类型)的顺序相同。我真的不认为这是什么OP后,我自己 – 2010-07-13 06:19:33
是的,不同数量的列,给了我这个错误。 – Derek 2010-07-13 06:20:51
好点 - 我会在下一次键盘之前让大脑参与进来。我认为这个操作可能是在联合国之后,因为 - 给了ORDER BY(可能是错误的)。 – 2010-07-13 06:23:47
用途:
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
所以第一关考虑使用的mysqli对于任何严肃的项目。 OMG小马的答案是我会建议如何做,认为你不应该在select子句中分别指定alias.wildcard字段。实际上指定你正在尝试获取的字段而不是*是最好的做法,虽然我们在懒惰时都会使用很多*。
Will A的回答让我感到微笑,因为它在技术上是你要求的,但不是我期望的你想要的。
您是否更详细地描述了您要提取的数据,或者仅仅是一个示例,因为您在计算连接时遇到困难?
-J
你必须指定别名,因为这两个表中都有一个'cur_time'列 - 没有别名,你会得到一个“模棱两可的列引用”错误。 – 2010-07-13 06:32:06
我真的得到... – Derek 2010-07-13 06:34:23
我同意有一个模棱两可的列,但我只是在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
说这是无效的。有一个常用名称的几个字段,cur_time是一个... – Derek 2010-07-13 06:16:49
@Derek:因为'cur_time'列在两个表中,所以您需要选择ORDER BY应该使用哪个表并将aliias添加到ORDER BY – 2010-07-13 06:21:05
我使用这个解决方案,除了将ORDER BY改为“ORDER BY pay.cur_time DESC,sub.cur_time DESC”谢谢! – Derek 2010-07-13 06:29:05