[Solved] Niepasujące dane

Użytkowanie programu bazodanowego
sticzi
Posty: 12
Rejestracja: pt mar 25, 2022 8:21 pm

[Solved] Niepasujące dane

Post 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ń?
Ostatnio zmieniony śr mar 30, 2022 5:05 pm przez sticzi, łącznie zmieniany 1 raz.
OpenOffice 4 na Windsows 10
Awatar użytkownika
Rafkus
Posty: 515
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Niepasujące dane

Post 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" .
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
Jan_J
Posty: 4560
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Niepasujące dane

Post 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.
JJ
LO (7.6|24.2) ∙ Python (3.12|3.10) ∙ Unicode 15 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Awatar użytkownika
Rafkus
Posty: 515
Rejestracja: czw kwie 12, 2018 10:26 pm

Re: Niepasujące dane

Post 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.
LibreOffice 7.4.6 (preferowany) oraz OpenOffice 4.1.6. Widows 10
OpenOffice 4.1.3. oraz Libre 4.2.5.2 Windows XP
sticzi
Posty: 12
Rejestracja: pt mar 25, 2022 8:21 pm

Re: [Solved] Niepasujące dane

Post autor: sticzi »

Dzięki wielkie za rozrysowanie mi tego.
OpenOffice 4 na Windsows 10
ODPOWIEDZ