首页 > 解决方案 > 获取外键值不是 id SQL

问题描述

伙计们 php 初学者在这里 :)

我知道我的问题被问了很多,但是我阅读了 20 多个答案,其中大多数都无法使用我的查询,而且我的查询很简单,但我不知道为什么我无法使用 :(,

我有 2 个表:

1-用户: (id,username,country,status) 主键是id & 外键是国家

2-国家(country_id,country_en,country_code)主键是country_id

当我将数据插入国家表并将数据插入用户时,一切都很好并且相互连接!

但是当我来查询这里的部分时,我的问题是:这里的一切都在工作!但是国家/地区输出值是 ID 并且我希望它是它的名称,因为 country_en 具有名称值

$sql = "SELECT * FROM `users` 
        WHERE `users`.`status` = 'active' 
        ORDER BY RAND() LIMIT 10 ";

在我阅读了许多问题的答案后,我尝试添加 UNION、LEFT JOIN 等。但仍然相同&我从我的&我知道问题&我将从我的错误中学习我试图解决这个问题的最终查询

$sql = "SELECT * 
        FROM `users` WHERE `users`.`status` = 'active' 
        INNER JOIN `countries` ON `users`.`country` = `countries`.`country_en` 
        ORDER BY RAND() LIMIT 10 ";

你们能帮我吗:(

标签: phpsqlmysqliinner-join

解决方案


感谢你们每一个人试图帮助我,

我想和大家分享我的问题的答案,用最好的方法来获取外键的数据,而不是只用 ID,方法使用“ JOIN

minitauros 说: 如果表有不同的列名,则JOIN有效。在最终查询下方

SELECT `users`.`id`, `users`.`username`, `users`.`country`, `users`.`status`, `countries`.`country_id`, `countries`.`country_en` FROM `users` JOIN `countries` ON `users`.`id` = `countries`.`country_id` WHERE `users`.`id` = 1

在查询的 ON 部分,您告诉查询第一个表中的哪一列与第二个表中的哪一匹配

归功于minitauros

使用的 SELECT 语句有不同的列数?


推荐阅读