PHP Select Count and Left Join where


PHP Select Count and Left Join where

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

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

$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);

我必须从特定训练(WHERE idt) where partic = '' OR partic = 'y' OR (partic = 'n' AND TRAINING[logoff] = 'n')中获得球员计数

问题是TRAINING[logoff]是来自不同表的值。我是否能够使左连接将此值转换为基于app_tgp.idt = app_training.id的Select Count to Where子句?

谢谢你的回答!

问题就在这里$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'))

您必须执行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 -列必须具有相同的信息