我不确定是否有可能以这种方式组合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
-列必须具有相同的信息