一个sql查询,用于获取两个表的数据,即使相关id不可用



我必须列出分类账和会计主管

账户主管

id | name   | phone
1  | Saijal | 989898    
2  | Shakya | 878787

分类帐

id | accid | dr    | cr
1  |  1    | 10000 | 5000

Sql我尝试过

select * from ledger full join accounthead on accid = accounthead.id 
where accid=1

它给出了我想要的所有结果,但id accid=2它显示为空,但我想要来自accounthead的所有信息,即使它在分类帐中没有数据

LEFT JOIN是您所需要的,它将返回ledger表中的所有行,并且仅返回accounthead中的匹配行

SELECT ledger.id AS ledger_id, ledger.accid, ledger.dr, ledger.cr,
accounthead.name, accounthead.phone
FROM accounthead LEFT JOIN ledger
ON accounthead.id = ledger.accid

此外,不要使用SELECT *,而是只使用所需的列。

通常,您会使用LEFT JOIN来处理此类问题。第一个表包含结果集中所需的所有行。第二个有"添加"的信息。

select . . .  -- whatever columns you want
from accounthead ah left join
ledger l
on l.accid = ah.id ;

l.accid中不匹配的ah.idledger列将为NULL

您还具有条件where l.accid = 1。我猜这并不是真正需要的,上面的内容就是你想要的。

最新更新