Strona 1 z 1

[Solved] Niepasujące dane

: pn mar 28, 2022 12:11 am
autor: sticzi
W accesie jest coś takiego jak kreator kwerend wyszkujących niepasujące dane.
Czy jest jakiś ekwiwalent czegoś podobnego w open office? A jeżeli nie to jak rozwiązuje się problemy w stylu znalezienia klientów, którzy nie złożyli żadnych zamówień?

Re: Niepasujące dane

: pn mar 28, 2022 10:35 pm
autor: Rafkus
Nie wiem jak to jest w acesie, ale AOO i LO również posiadają kwerendy i można tak skonstruować zapytanie aby wynik zwracał "niepasujące" dane.
Można to osiągnąć przy pomocy lewostronego lub prawostronnego złączenia dwóch tabel. Złączenie takie wyświetla wszystkie dane z jednej tabeli i dopasowuje do tych wartości wyniki z drugiej tabeli. Jeżeli jakieś wartości z tabeli pierwszej nie znajdzie w tabeli drugiej wartości przy tum rekordzie otrzymają wartość null.
Wiem, że to troszkę zagmatwane dlatego proponuje pobierz tą bazę: BazaDanych - Befama4.odb, przy jej pomocy spróbuję wyjaśnić ten problem.
W tej bazie utwórz kwerendę SQL, wlej poniższy kod, zapisz i uruchom:

Kod: Zaznacz cały

SELECT
   "Klienci (Kontrahenci)"."NIP",
   "Klienci (Kontrahenci)"."Skrócona Nazwa Firmy",
   "Faktury"."NrFaktury"
FROM "Faktury" RIGHT JOIN "Klienci (Kontrahenci)"
   ON "Faktury"."KlientNip" = "Klienci (Kontrahenci)"."NIP" 
Wynikiem będzie kwerenda wyświetlająca pewne wyniki z dwóch tabel ( "Faktury" oraz "Klienci (Kontrahenci)" ), zastosowane prawostronne złączenie spowoduje, że będą wyświetlone wszystkie rekordy z tabeli "Klienci (Kontrahenci)" a dokładniej pola "NIP" i "Skrócona Nazwa Firmy". Do tych rekordów zostaną dopasowane wyniki z tabeli "Faktury"."NrFaktury".
Dodając na końcu kodu jeszcze warunek:

Kod: Zaznacz cały

WHERE "Faktury"."NrFaktury" IS NULL
mówimy że interesują nas tylko rekordy w których pole "NrFaktury" jest puste.

Ten sam efekt uzyskać można stosując zapytanie z podzapytaniem:

Kod: Zaznacz cały

SELECT  
	"NIP", 
	"Skrócona Nazwa Firmy"  
FROM "Klienci (Kontrahenci)" 
WHERE NOT "NIP" IN ( SELECT "KlientNip" FROM "Faktury" )
Czyli mają być wyświetlone wartości z pól "NIP" i "Skrócona Nazwa Firmy" z tabeli "Klienci (Kontrahenci)", przy czym numery z pola "NIP" NIE MAJĄ BYĆ takie same jak numery zapisane w polu "KlientNip" z tabeli "Faktury" .

Re: Niepasujące dane

: wt mar 29, 2022 1:13 pm
autor: Jan_J
Z poziomu SQL sprawa jest dość oczywista i odpowiedź także.
Siedziałem cicho sądząc, że @sticzi zamierza „wykreować” zapytanie posługując się jedynie graficznym interfejsem użytkowym programu.
Mnie osobiście bliższe jest operowanie językiem niż manipulacja, bez względu na to, czy dotyczy to użytkowania, czy nauczania. Jednak są sytuacje, w których sposób patrzenia jest narzucony przez warunki zewnętrzne.

Re: Niepasujące dane

: wt mar 29, 2022 6:04 pm
autor: Rafkus
Pytanie brzmiało: "Czy w LO, AOO jest kreator do wyszukiwania niepasujących danych" - a przynajmniej ja je tak zrozumiałem. Trochę zawile odpowiedziałem że takiego kreatora tutaj nie ma, ale przy odrobinie wiedzy na temat języka SQL idzie samemu taką kwerendę stworzyć. Nowicjuszowi w Base faktycznie, przy pomocy interfejsu graficznego może być na początku nieco łatwiej ogarnąć taki temat. Przy jego użyciu, takie zapytanie (w skrócie) tworzy się tak:
PołączenieTabel.png
1. Wybierz Utwórz projekt kwerendy;
2. Wybierz jakich tabel lub/i kwerend będą pobierane dane.
3. Wybierz, które pola mają być wykorzystane (wyświetlane w wyniku).
4. W kryterium określasz jakie warunki mają być spełnione aby wyświetlić tylko interesujące cię rekordy.
5. Tabela Faktury ma w sobie jedno pole powiązane z tabelą Klienci (Kotrachenci), jest nim pole KlientNip i odpowiada ono polu-kuczu NIP. Należy (jeśli niema) utworzyć złączenie tych tabel, w tym celu chwyć pole KlientNip (kliknij na dane pole, trzymając wciśnięty klawisz myszki) i umieść je na polu NIP. Powinna pojawić się linia łącząca te dwa pola (na obrazku zaznaczyłem ją na żółto).
6. Kliknij dwukrotnie na tą linię, otworzy się okno Właściwości złączenia, tam możesz ustawić jaki typ złączenia ma być zastosowany.

Re: [Solved] Niepasujące dane

: śr mar 30, 2022 5:50 pm
autor: sticzi
Dzięki wielkie za rozrysowanie mi tego.