|
|
|
| написал запрос, но он выбирает значение, если вполях ns1 и ns2 есть записи, а как сделать чтобы выбирались все значения когда заполнено поле ns1 или ns2. Знаю что через or но что-то у меня не получается
SELECT AKC97P.NP, AKC97P.FIO, AKC97P.NS1, AKC97P_1.FIO, AKC97P.NS2, AKC97P_2.FIO
FROM (AKC97P INNER JOIN AKC97P AS AKC97P_1 ON AKC97P.NS1 = AKC97P_1.NP) INNER JOIN AKC97P AS AKC97P_2 ON AKC97P.NS2 = AKC97P_2.NP
GROUP BY AKC97P.NP, AKC97P.FIO, AKC97P.NS1, AKC97P_1.FIO, AKC97P.NS2, AKC97P_2.FIO
HAVING (((AKC97P.NP)=[000])); | |
|
| |
|
|
|
| ...where nz(ns1,"") <> "" or nz(ns2,"") <> "" | |
|
| |
|
|
|
| SELECT AKC97P.NP, AKC97P.FIO, AKC97P.NS1, AKC97P_1.FIO, AKC97P.NS2, AKC97P_2.FIO
FROM (AKC97P INNER JOIN AKC97P AS AKC97P_1 ON AKC97P.NS1=AKC97P_1.NP) INNER JOIN AKC97P AS AKC97P_2 ON AKC97P.NS2=AKC97P_2.NP
where nz(AKC97P.ns1,"") <> "" or nz(AKC97P.ns2,"") <> ""
GROUP BY AKC97P.NP, AKC97P.FIO, AKC97P.NS1, AKC97P_1.FIO, AKC97P.NS2, AKC97P_2.FIO;
тот же результат | |
|
| |
|
|
|
| Какой тип данных полей ns1 и ns2? | |
|
| |
|
|
|
|
| у Вас еще эти поля используются в Join, если в них Null, то эти записи будут пропущены
попробуйте в Join использовать nz | |
|
| |
|
|
|
|
| SELECT AKC97P.NP, AKC97P.FIO, AKC97P.NS1, AKC97P_1.FIO, AKC97P.NS2, AKC97P_2.FIO
FROM (AKC97P left JOIN AKC97P AS AKC97P_1 ON AKC97P.NS1 = AKC97P_1.NP) left JOIN AKC97P AS AKC97P_2 ON AKC97P.NS2 = AKC97P_2.NP
WHERE (((nz([AKC97P].[ns1],0))>0)) OR (((nz([AKC97P].[ns2],0))>0))
GROUP BY AKC97P.NP, AKC97P.FIO, AKC97P.NS1, AKC97P_1.FIO, AKC97P.NS2, AKC97P_2.FIO;
это работает | |
|
| |