为成员列表发布联接表


join tables issue for member list

我有两个表,我正在努力加入信息,我认为我忽略了一些东西。

users
-----
uid    username   rank_id  reg_date     country
mil_rank
-----
rank_id    rank_title    

Desired output:
---------------
   Username      Rank Title    Reg Date    Country
     john           sgt        today        usa

$sql = "SELECT * users.uid, mil_rank.rank_title ".
    "FROM users, mil_rank ".
    "WHERE users.rank_id = users.rank_title";

如果可能的话,我想从两个表中选择所有

还有撇号"和点.。以下是好的语法

  $sql = "SELECT users.uid, mil_rank.rank_title
        FROM users, mil_rank
        WHERE users.rank_id = users.rank_title";

您需要使用rank_id键将两个表连接在一起:

SELECT users.username, mil_rank.rank_title, users.reg_date, users.country
FROM users, mil_rank
WHERE users.rank_id = mil_rank.rank_id

由于rank_id列出现在两个表中,并且您不希望在输出中出现该列或uid列,因此您可能也不希望只选择*

试试这个例子

SELECT u.uid, u.username, u.rank_id, u.reg_date, u.country, m.rank_id, m.rank_title
FROM users u, mil_rank m
WHERE u.rank_id = m.rank_id

如果您希望使用JOIN,那么这就是编写查询的方法

SELECT u.username, u.reg_date, u.country, m.rank_title
FROM users u
   JOIN mil_rank m ON m.rank_id = u.rank_id

如果你想要这个特定的排名,那么

SELECT u.username, u.reg_date, u.country, m.rank_title
FROM users u
   JOIN mil_rank m ON m.rank_id = u.rank_id
WHERE m.rank_title = 'sgt'

回答您的意见,是

SELECT u.username, u.reg_date, u.country, m.rank_title
FROM users u
   JOIN mil_rank m ON m.rank_id = u.rank_id
WHERE u.status_id != 1

也许如果你通读了一本SQL基础教程,你就可以自己做一些基本的事情了。