Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 不满足内部联接条件时的循环结果_Php_Mysql - Fatal编程技术网

Php 不满足内部联接条件时的循环结果

Php 不满足内部联接条件时的循环结果,php,mysql,Php,Mysql,我有一个SELECT语句,它通过几个内部连接将三个表结果、赌注、用户名连接起来。以下是连接: INNER JOIN bets b ON a.winner = b.horse INNER JOIN users c ON b.username = c.username WHERE a.twitter_pubstatus = 0 AND a.market = '$win' AND b.type = '$userwin' AND a.date_dd = b.dd AND a.date_mm = b.

我有一个SELECT语句,它通过几个内部连接将三个表结果、赌注、用户名连接起来。以下是连接:

INNER JOIN bets b ON a.winner = b.horse 
INNER JOIN users c ON b.username = c.username
WHERE a.twitter_pubstatus = 0 AND a.market = '$win' AND b.type = '$userwin' 
AND a.date_dd = b.dd AND a.date_mm = b.mm GROUP BY a.winner"); 
然后我在下面有一个php while循环,它循环所有的结果,如果所有的条件都符合上面的条件,那么就循环赢家

我正在努力解决的是,当连接的条件不满足时,我无法让循环显示任何结果。例如,在表a结果中,每15分钟输入一个赢家,但在表b下注中可能没有匹配的赢家下注。因此:

INNER JOIN bets b ON a.winner = b.horse
会倒下的

我想要的是:

如果所有内容都匹配正确,则循环遍历所有获胜者,包括这些用户名。这很有效

如果b.horse不存在,这意味着没有人赢了,所以我需要它来显示结果。这个我不能去工作,如果没有赢家,我怎么才能让它显示所有的结果呢

提前感谢

您必须使用LEFT JOIN来获取不匹配的行

SELECT *
FROM results a
LEFT JOIN bets b ON a.winner = b.horse AND b.type = '$userwin' AND a.date_dd = b.dd AND a.date_mm = b.mm
LEFT JOIN users c ON b.username = c.username
WHERE a.twitter_pubstatus = 0 AND a.market = '$win'
GROUP BY a.winner

如果b.horse不存在,则来自bets的列将为空。

内部联接仅生成具有匹配项的行。如果您想要不匹配的行,则必须使用左连接。在while循环中,我可以使用:If$horse==NULL{horse在前面定义为$horse=$row['horse'];但我想使用来自表结果的SELECT语句中的一些字段。这可能吗?结果中的所有字段都将在那里。只有来自bets和users的字段将为NULL。如果horse==NULL,我无法让它显示任何内容。数据库中有6个结果应该显示,因为它们在bets表中不匹配。不是suWhat’如果你说结果中的所有字段都应该在那里,那么当$horse为空时,当你打印$row['winner']时你会看到什么呢?如果你只是从mysql命令行工具或phpMyAdmin手动运行查询,而不是从PHP运行查询,会怎么样?