使用mysql查询在左连接中出现问题

时间:2013-08-05 11:50:47

标签: mysql

我在这里有这个问题

$rs = mysql_query("select Username.users,phone.users,user_id.coupon,points.coupon,time.coupon from users LEFT JOIN coupon on Username.users = coupon.user_id where coupon.user_id like '%$search%' or coupon.time like '%$search%' order by $sort $order limit $offset,$rows"); 

Where 

$sort = isset($_POST['sort']) ? strval($_POST['sort']) : 'time';   

我在这里做错了吗? 我没有得到任何结果, 请帮帮我。

谢谢..

3 个答案:

答案 0 :(得分:1)

您选择columnname.tablename而不是tablename.columnname。因此,不是Username.users使用users.Username和所有相应的。

select users.Username  --<-- here 
      ,users.phone ,coupon.user_id. ,coupon.points ,coupon.time
  from users LEFT JOIN coupon 
    on users.Username = coupon.user_id  --<-- also here
 where ...

此外,您可以使用别名来减少查询编写查询的长度和时间,更简单,如下所示:

select u.Username  --<-- here 
      ,u.phone ,c.user_id. ,c.points ,c.time
  from users u LEFT JOIN coupon c
    on u.Username = c.user_id  --<-- also here
 where ...

答案 1 :(得分:0)

尝试按以下方式编写查询,这可能有所帮助:

$rs = mysql_query("select users.Username,users.phone,coupon.user_id,coupon.points,coupon.time from users LEFT JOIN coupon on users.Username = coupon.user_id 
where coupon.user_id like '%$search%' or coupon.time like '%$search%' order by $sort $order limit $offset,$rows");

只需验证users.Username实际上是加入优惠券表的正确ID。不应该是users.user_id吗?在这种情况下它将是

$rs = mysql_query("select users.Username,users.phone,coupon.user_id,coupon.points,coupon.time from users LEFT JOIN coupon on users.user_id = coupon.user_id 
where coupon.user_id like '%$search%' or coupon.time like '%$search%' order by $sort $order limit $offset,$rows");

答案 2 :(得分:0)

更合适的方法,

因为时间是Sql中的一种类型

select users.`Username`, users.`phone`, coupon.`user_id`, coupon.`points`,coupon.`time` from users 
LEFT JOIN coupon 
on users.`Username` = coupon.`user_id` 
where coupon.`user_id` like '%$search%' or coupon.`time` like '%$search%'