2012-09-10 110 views
0

我有两个表:dba_accountdba_account_password。现在我正尝试从两个表中填充信息。我正在使用此查询。现在选择与内部联接的查询

SELECT da.account_name, da.account_id, da.status, da.manager_firstname, 
dap.live_password_change, dap.dev_password_change FROM dba_account da INNER JOIN 
dba_account_password dap ON da.account_id = dap.account_id 

,事情是dba_account有1328多条记录(ACCOUNT_NAME)和dba_account_password只有270条记录。当我运行这个查询时,它只显示270条记录。但我也想显示其他用户名(不在dba_account_password中的用户名)。有什么建议么?

回答

2

更改为LEFT JOIN

SELECT da.account_name, 
    da.account_id, 
    da.status, 
    da.manager_firstname, 
    dap.live_password_change, 
    dap.dev_password_change 
FROM dba_account da 
LEFT JOIN dba_account_password dap 
    ON da.account_id = dap.account_id 

INNER JOIN只会给你匹配两个表中的记录。这里是一个很好Visual Explanation of Joins

+0

嘿感谢...得到它。感谢你的帮助... – ashah142

1

您可以使用左连接在这种情况下

SELECT da.account_name, da.account_id, da.status, da.manager_firstname, 
dap.live_password_change, dap.dev_password_change FROM dba_account da LEFT JOIN 
dba_account_password dap ON da.account_id = dap.account_id 

左小描述加入

**

table 1 
userid username 
1  ABC 
2  PQR 
3  DEF 
table2 
userid userRole 
1  ACCOUNTANT 
2  HO 

RESULT OF LEFT JOIN :- 

left join on table1.userid=table2.userid 
    userid username userrole 
    1  ABC  ACCOUNTANT 
    2  PQR  HO 
    3  DEF 

**