我不确定是否可以通过这种方式组合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
?
感谢您的回答!
答案 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
- 列必须包含不同的信息