php - 如果结果为空,则调用第二个查询

标签 php mysql

如果用户在表 1 和 2 中都有信息,我将调用 INNER JOIN 查询来显示用户的结果 - 这工作正常。但是,如果所述用户在两个表中都没有信息,那么我的变量将返回未定义。

因此,我想调用 INNER JOIN 查询,如果 Table1 的行为空,它将调用第二个查询来显示 Table2 的结果。

(Table2肯定存储了信息。Table1是可选的,具体取决于用户)

如果另一个用户在表 1 和表 2 中都有信息,我还想显示表 1 和表 2 中的结果,但我似乎无法使其正常工作。这是我到目前为止所拥有的;

$sql="SELECT * FROM Table1 INNER JOIN Table2 ON Table1.username = Table2.username WHERE Table1.username='" . $_SESSION['username']['1'] . "'";

$result=MySQL_Query($sql);
if (mysql_num_rows($result)==0)
{ 
    $sql2"SELECT * FROM Table2 WHERE username='" . $_SESSION['username']['1'] . "'";
    $result2=MySQL_Query($sql2);
}

while ($rows=mysql_fetch_array($result)($result2))
{
    $Username = $rows['username'] ." ";
    $Email = $rows['email'] . " ";
}

echo $Email; ?>

最佳答案

您可以使用外部联接重写查询,如下所示:

select
    t1.desired_info
    t2.desired_info
from
    table2 as t2
        left outer join
    table1 as t1
        on (t2.username = t1.username)
where
    t2.username = target_username;

where 子句会将结果集缩小到感兴趣的用户,如果 target_username 不存在,则返回 0 行。如果该用户不存在于该表中,t2.desired_info 将始终返回,而 t1.desired_info 将为 null。

您可以先检查 php 代码中的 p1.desired_info,如果没有出现,则使用 p2.desired。

关于php - 如果结果为空,则调用第二个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34229981/

相关文章:

php - Symfony 2 FOS UserBundle 用户没有获得组的角色

php - 检查是否用simplexml_load_string加载了xml

php - Zend Framework 无法连接到 MySQL 数据库

php - 仅使用 php 防止 SQL 注入(inject)

php - 好的php mysql密码散列

php - 2 相同的查询数据库返回不同的结果

php - 现有网站需要多个用户访问相同的数据

php - foreach $data 没有显示任何 CI Mysql

php - 使用php导出ang从excel检索数据到数据库

mysql - SQL - 如何过滤连接表中的多行?