php - 如何在 mySql 上加入 2 个表?

标签 php mysql sql

我有两个表:publick_feedusers

我想从 public_feed 中选择所有内容,并从 users 中选择三列,其 iduser_idpublic_feed 并将从 public_feed 返回的行分配给用户表中的列(通讯员)

我试试这个:

<?php

$sql = "
SELECT * FROM public_feed
WHERE user_id IN
(SELECT id FROM users) AND 
(SELECT Firstname,Lastname,Avatar FROM users WHERE id IN(SELECT user_id FROM public_feed))  

";

$query  = mysqli_query($dbc_conn,$sql);
if(mysqli_num_rows($query) > 0){
    while($row = mysqli_fetch_assoc($query)){
        //echo rows with correspondent details from the users table
        echo $row['user_id'];
        }
}

<?

如有任何帮助,我们将不胜感激。 谢谢。

最佳答案

或者如果 public_feed 中没有用户,而你仍然想获取用户数据,则使用 left join 的版本

SELECT
  u.*, f.* 
FROM
  public_feed f LEFT JOIN
  users u ON f.user_id = u.id;

因为作者要求解释,这里是:

首先我们将使用表名别名来缩短查询

public_feed f

users u

我们是说要用别名引用表。当然*表示我们要选择所有列

SELECT users.*, public_feed.*

等于

SELECT u.*, f.*

当然你可以使用任何其他字母作为别名

接下来我们说 public_feed.user_id 必须等于 users.id。但是当公共(public)提要条目不存在时,只显示具有空值的列。这就是我们使用 LEFT JOIN 而不是 INNER JOIN 的原因。通常 JOINS 用于从多个相关表中获取相关数据。

ON 关键字表示表中列的值必须等于才能满足请求

关于php - 如何在 mySql 上加入 2 个表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38970542/

相关文章:

mysql - 当JOIN表为空时如何显示数据库中的数据?

php - 以查询形式回显数组值

mysql - 根据表值添加整数的有效方法

php - 使用 javascript/jquery 动态操作 php cookie

php - Laravel Image Cache 比源代码慢

php - mysql - 子查询返回多于 1 行错误

sql - 使用带有回退功能的右表对左外连接进行排序

sql - 在 postgresql 中使用 MIN, MAX, (SUM/COUNT) 子查询

php - 仅检索数据库中的部分记录

php - 在通过 Android 应用程序访问本地主机中的 PHP 脚本时,我在 Connection{192.168.43.230 :25689, ..}