我必须列出分类账和会计主管
账户主管
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.id
的ledger
列将为NULL
。
您还具有条件where l.accid = 1
。我猜这并不是真正需要的,上面的内容就是你想要的。