2010-07-16 76 views
0

我有一个名为'company'和'user'的表。用户表包含公司的ID。 例如像:MySQL:从其他匹配ID的表中获取数据

A. User table 

user_id | name | company_id |status 
1  | john | 1  | active 

B. Company table 

company_id | name | status 
1   | ABC | active 

如何通过其在单个SQL查询ID来获得公司的名称。 等;

$query = "SELECT name as Username, company_id as Company_Name From `user` where status='active'"; 

这将会给的结果是:

Username | Company_Name 
    john | ABC 

任何帮助或如何做到这一点的想法... 在此先感谢。

回答

10
SELECT u.name AS Username, c.name AS Company_Name 
FROM User AS u 
INNER JOIN Company AS c 
    ON u.company_id = c.company_id 
WHERE u.status = 'active' 
    AND c.status = 'active' 

如果它们没有意义,可以随意在WHERE子句中删除其中一个或两个表达式。

+0

谢谢无论如何..但我已经找到了我自己的SQL。 SELECT u.name AS Username,(SELECT c.name FROM Company as c WHERE c.id = u.company_id)as Company_Name FROM user as as WHERE u.status ='active' – Trez 2010-07-16 02:31:11

+7

我会坚持Ignacio的回答:他是使用比双查询解决方案效率更高的联接。 – dmkc 2010-07-16 02:34:39