SQL-запрос для извлечения данных из обеих таблиц, даже если связанный идентификатор не доступен - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть таблица бухгалтерских книг и учетная запись

accounthead

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, он показывает ноль, но я хочу получить всю информацию из учетной записи, даже если он не содержит данных в бухгалтерской книге

Ответы [ 2 ]

0 голосов
/ 07 ноября 2018

Как правило, вы подходите к таким проблемам, используя LEFT JOIN. Первая таблица содержит все строки, которые вы хотите в наборе результатов. Второй имеет «добавленную» информацию.

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

Столбцы из ledger для ah.id с, которые не совпадают в l.accid, будут NULL.

У вас также есть условие where l.accid = 1. Я предполагаю, что это на самом деле не нужно, и вышесказанное делает то, что вы хотите.

0 голосов
/ 07 ноября 2018

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 *, используйте только необходимые столбцы.

...