【问题标题】:Select from a select query从选择查询中选择
【发布时间】:2017-08-28 10:05:11
【问题描述】:

我正在将此查询用于类似于“instagram”的页面(不,我不是在尝试制作 instagram)

我正在使用此代码

<?php
    $query = mysql_query('SELECT * FROM camera_web ORDER BY url ASC LIMIT 50');
    while($row = mysql_fetch_array($query)){
        echo '<img src="'.$row['url'].'" valign="middle" />'.$row['username'].' <br><hr>  <b>'.$row['user_id'].'</b>  <i>'.$row['description'].'</i><br />';
    }
?>

它显示了“camera_web”表中的图片以及该表中的 user_id。

当有人发布照片时,我看到照片但看不到用户名,而是 user_id,如何使查询从 ID = (user_id) 的“用户”表中选择“用户名”。

我无法更好地解释,如果你不太明白我会前进。

【问题讨论】:

  • 使用加入@Omega Cebbo
  • 您需要将您的用户表加入查询。示例(SELECT camera_web.url, camera_web.description, users.username FROM camera_web LEFT JOIN users ON camera_web.user_id = users.user_id ORDER BY camera_web.url ASC LIMIT 50
  • 但是,您需要停止使用 mysql_ 方法 - 它们在 PHP5 的更高版本中已被弃用并在 PHP7 中被删除 - 查看 mysqli_pdo(您也可以与 MySQL 一起使用) .

标签: php mysql


【解决方案1】:

你使用外键加入两个表

select `user_table_name`.`user`, `camera_web`.`url` 
from `camera_web` 
left join `user_table_name` 
on `user_table_name`.`id` = `camera_web`.`user_id` 
order by `camera_web`.`url` asc limit 50

【讨论】:

    【解决方案2】:

    你需要使用JOIN,例如:

    SELECT c.*, u.username
    FROM camera_web c JOIN users u ON c.user_id = u.id
    ORDER BY c.url LIMIT 50;
    

    这仍然会同时选择user_idusername,如果您不想要user_id,可以将c.* 替换为逗号分隔的字段列表(egcid、c.picture 等)。

    【讨论】:

      【解决方案3】:

      你只需要LEFT JOIN users table by user_id:

      SELECT cw.* , u.username
      FROM camera_web cw
      LEFT JOIN users u
      ON u.id = cw.user_id
      ORDER BY cw.url ASC LIMIT 50
      

      【讨论】:

      • cw 代表 camera_web 我猜?
      猜你喜欢
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      相关资源
      最近更新 更多