如何从表2中选择数据与表1结合

时间:2018-07-30 03:47:03

标签: php mysql sql

我如何选择要在php中显示名称的登录用户,表1是主要用户,表2是额外用户,通过ID和ID_ppl与主要用户相关联

我需要在php中显示登录的用户名。但只有它可以向我显示主要用户,尽管我以其他用户身份登录,并且必须显示名称为其他用户。

例如,我使用 Juana 登录,并在php中显示了主要用户 Andres ;什么时候必须告诉我胡安娜的名字

表1主要用户

id |  usuario  | password | token | nivel | estado | 
----------------------------------------------------
1  | Andres    | *****    | e12A1 | 1     | on     |
----------------------------------------------------

表2额外的用户

id |  usuario  | password | token | id_ppl | nivel | estado |
-------------------------------------------------------------
1  | Juana     | *****    |       | 1      | 2     | on     |
-------------------------------------------------------------
2  | Martin    | *****    |       | 1      | 2     | off    |
-------------------------------------------------------------

Php查询

$stmt = $conn->prepare("SELECT T1.id, T1.usuario, T1.token, T1.nivel, T1.estado FROM escolar AS T1 LEFT OUTER JOIN users_extra AS T2 ON T1.id = T2.id_ppl");

    $stmt->bind_param("ss",$usuario, $password); 
     $stmt->execute(); 
     $stmt->store_result(); 
     if($stmt->num_rows > 0){ 
     $stmt->bind_result($id, $usuario, $token, $nivel, $estado);
     $stmt->fetch();

    $user = array(
     'id' => $id,
     'usuario' => $usuario,
     'token' => $token,
     'nivel' => $nivel,
     'estado' => $estado
     );

2 个答案:

答案 0 :(得分:2)

您仅从T1中进行选择。您需要包括T2中的用户。

SELECT T1.*, T2.usuario AS extrausers
FROM escolar AS T1 
LEFT OUTER JOIN users_extra AS T2 ON T1.id = T2.id_ppl

此外,由于T1中的每个用户在T2中有多个额外用户,因此您的结果将获得多行(每个额外用户一行)。您可能要在您的php中解决这个问题。

答案 1 :(得分:0)

尝试一下

SELECT T1.id, T2.usuario, T1.usuario, T1.token, T1.nivel, T1.estado FROM escolar AS T1 LEFT OUTER JOIN users_extra AS T2 ON T1.id = T2.id_ppl;

您没有从T2中选择任何列

谢谢;)