PHP选择Count和Left Join在哪里

时间:2015-06-09 05:42:48

标签: php mysql join left-join

我不确定是否可以通过这种方式组合SELECT COUNT + Left Join,但这对我来说非常有帮助。

这是我的代码whitout左连接尝试:

$pp = mysql_result(mysql_query("SELECT COUNT(*) FROM app_tgp WHERE idt='$zaznam[id]' AND ( partic='' OR partic='y' OR (partic=='n' AND $zaznam[logoff]=='n'))"), 0);

我必须从特定培训中获得COUNT个玩家(WHERE idt)where partic = '' OR partic = 'y' OR (partic = 'n' AND TRAINING[logoff] = 'n')

问题是TRAINING[logoff]是来自不同表的值。我是否能够使用Left Join将此值基于app_tgp.idt = app_training.id

将Select Count转换为Where子句

感谢您的回答!

2 个答案:

答案 0 :(得分:1)

问题出在这里$ zaznam [logoff] =='n'。必须有您编写$ zaznam [logoff]的任何列名。对于应用左连接,您应该执行以下操作:

SELECT COUNT(*) FROM app_tgp t1 LEFT JOIN app_training t2 on t1.idt = t2.id WHERE t1.idt='$zaznam[id]' AND ( t1.partic='' OR t1.partic='y' OR (t1.partic=='n' AND t2.your_column_name_here=='n'))

答案 1 :(得分:0)

你必须做LEFT JOIN条款。在这种情况下,您的training表必须包含任何列,表示列app_tgp表中的任何信息。如果是这样,您可以构建查询:

  

$pp = mysql_result(mysql_query("SELECT COUNT(*) FROM app_tgp LEFT JOIN different_table ON app_tgp.column = different_table.column WHERE app_tgp.idt='$zaznam[id]' AND ( app_tgp.partic='' OR app_tgp.partic='y' OR (app_tgp.partic=='n' AND different_table.training[logoff] = 'n'))"), 0);

JOIN克劳斯,app_tgp.column = different_table.column - 列必须包含不同的信息