获取foregin键值而不是id SQL

时间:2019-01-02 14:40:42

标签: php sql mysqli inner-join

家伙php初学者在这里:)

我知道我的问题已经被问了很多,但是我读了20多个答案,其中大多数都不适用于我的查询,而且我的查询很简单,但是我不知道为什么不对我有用:( ,

我有2个表:

1- USERS :( ID,用户名,国家/地区,状态)主键是 id ,而原例密钥是国家

2- 国家/地区(country_id,country_en,国家/地区代码)主键是 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 ";

你们能帮我吗:(

2 个答案:

答案 0 :(得分:0)

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

但是您愿意接受sql注入,因此请查看准备好的语句

答案 1 :(得分:0)

感谢大家对我的帮助,

我想与大家分享我的问题的答案,这是一种最佳方法,它不仅获取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

在查询的“打开”部分中,告诉查询第一个表中的哪一列 相匹配的第二张桌子。

贷记minitauros

The used SELECT statements have a different number of columns?