我很犹豫是否要发布整个查询,但也许这对于我的变量赋值是必要的。简而言之,第十列是一个子查询,应该返回另一个表中某个内容的出现次数。
sqlfiddle:http://sqlfiddle.com/#!9/3718e/2号
用户id 366
是一个测试生产帐户。这通常是动态绑定的 ?
准备好的变量。用户id 366
应该返回两行。这九列对于这个问题并不重要,但是第十列(子查询)应该有 1
以及 0
分别在第一行和第二行。这适用于到mysql的ssh连接。然而,php的mysqli甚至phpmyadmin都返回了 0
以及 0
分别。我已经对php进行了沙盒处理,所以我相信错误就在sql中。
ssh的正确输出示例(忽略前9列): +--------+ | guests | +--------+ | 0 | | 1 | +--------+
mysqli只返回0。其他列不受影响,ssh/mysqli都同意并正确返回。如果需要更多的背景,请告诉我。
谢谢您。SELECT tickets.id, @formal_id:=schedule.id as 'formal_id', schedule.name, schedule.date, schedule.colour, @li_price:=schedule.livers_in_price as 'li', @lo_price:=schedule.livers_out_price as 'lo', @gu_price:=schedule.guests_price as 'gu', tickets.for_sale as 'for_sale', @guest:=( SELECT COUNT(*) FROM billing WHERE guest = 1 AND user_id = @user_id AND formal_id = @formal_id ) AS 'guests' FROM tickets JOIN user ON tickets.user_id = user.user_id JOIN schedule ON tickets.formal_id = schedule.id JOIN billing ON tickets.formal_id = billing.formal_id WHERE user.user_id = 366 AND schedule.date > NOW() GROUP BY tickets.id;
1条答案
按热度按时间wfsdck301#
在执行联接时,如果不指定变量的表源,则可能会得到意外的结果。使用
table.column
语法可以帮你省去很多痛苦。在这种情况下
AND user_id = tickets.user_id
但我无法解释你的测试结果和我的不一致。