[SOLVED] Problem z kwerendą

Użytkowanie programu bazodanowego
fat_m
Posty: 5
Rejestracja: pt lip 23, 2010 7:05 pm

[SOLVED] Problem z kwerendą

Post autor: fat_m »

Witam. Mam dwie tabelę, jedna z danymi, druga jedno wierszowa do wpisywania danych do wyszukiwania. Gdy zapełniam wszystkie pola to jest ok. Ale gdy zostawię jedno pole wolne w tabeli "Szukanie", to nie wyświetla mi żadnego wyniku, a powinno, bo zastosowałem do każdego pola kryterium " or '%' ". Ktoś ma jakiś pomysł?

Kod: Zaznacz cały

SELECT "D"."Imię", "D"."Nazwisko", "D"."Data naprawy", "D"."Rodzaj naprawy", "D"."Miejsce naprawy", "D"."Jednostka kierująca 1", "D"."Jednostka kierująca 2" FROM "Dane" AS "D", "Szukanie" AS "S" 
WHERE (( "D"."Imię" = "S"."Imię") OR ("D"."Imię" = '%' )) AND (( "D"."Nazwisko" = "S"."Nazwisko") OR ("D"."Nazwisko" = '%' )) AND ( "D"."Data naprawy" BETWEEN "S"."Data_od" AND "S"."Data_do" ) AND (( "D"."Rodzaj naprawy" = "S"."Rodzaj naprawy") OR ("D"."Rodzaj napraway" = '%' )) AND (( "D"."Miejsce naprawy" = "S"."Miejsce naprawy") OR ("D"."Miejsce naprawy" = '%' )) AND (( "D"."Jednostka kierująca 1" = "S"."Jednostka kierująca 1") OR ("D"."Jednostka kierująca 1" = '%' )) AND (( "D"."Jednostka kierująca 2" = "S"."Jednostka kierująca 2") OR ("D"."Jednostka kierująca 2" = '%' ))
Ostatnio zmieniony śr sie 04, 2010 8:05 pm przez fat_m, łącznie zmieniany 1 raz.
OpenOffice 3.2.1 na Windows Vista
Arghil
Posty: 112
Rejestracja: sob lip 04, 2009 7:39 pm
Kontakt:

Re: Problem z kwerendą

Post autor: Arghil »

fat_m pisze:

Kod: Zaznacz cały

SELECT "D"."Imię", "D"."Nazwisko", "D"."Data naprawy", "D"."Rodzaj naprawy", "D"."Miejsce naprawy", "D"."Jednostka kierująca 1", "D"."Jednostka kierująca 2" FROM "Dane" AS "D", "Szukanie" AS "S" 
WHERE (( "D"."Imię" = "S"."Imię") OR ("D"."Imię" = '%' )) AND (( "D"."Nazwisko" = "S"."Nazwisko") OR ("D"."Nazwisko" = '%' )) AND ( "D"."Data naprawy" BETWEEN "S"."Data_od" AND "S"."Data_do" ) AND (( "D"."Rodzaj naprawy" = "S"."Rodzaj naprawy") OR ("D"."Rodzaj napraway" = '%' )) AND (( "D"."Miejsce naprawy" = "S"."Miejsce naprawy") OR ("D"."Miejsce naprawy" = '%' )) AND (( "D"."Jednostka kierująca 1" = "S"."Jednostka kierująca 1") OR ("D"."Jednostka kierująca 1" = '%' )) AND (( "D"."Jednostka kierująca 2" = "S"."Jednostka kierująca 2") OR ("D"."Jednostka kierująca 2" = '%' ))
Tam gdzie chcesz zastosować '%' powinieneś użyć słowa 'like' a nie '=', czyli:

Kod: Zaznacz cały

SELECT "D"."Imię", "D"."Nazwisko", "D"."Data naprawy", "D"."Rodzaj naprawy", "D"."Miejsce naprawy", "D"."Jednostka kierująca 1", "D"."Jednostka kierująca 2" FROM "Dane" AS "D", "Szukanie" AS "S" 
WHERE (( "D"."Imię" = "S"."Imię") OR ("D"."Imię"  LIKE '%' )) AND (( "D"."Nazwisko" = "S"."Nazwisko") OR ("D"."Nazwisko" LIKE '%' )) AND ( "D"."Data naprawy" BETWEEN "S"."Data_od" AND "S"."Data_do" ) AND (( "D"."Rodzaj naprawy" = "S"."Rodzaj naprawy") OR ("D"."Rodzaj napraway" LIKE '%' )) AND (( "D"."Miejsce naprawy" = "S"."Miejsce naprawy") OR ("D"."Miejsce naprawy" LIKE '%' )) AND (( "D"."Jednostka kierująca 1" = "S"."Jednostka kierująca 1") OR ("D"."Jednostka kierująca 1" LIKE '%' )) AND (( "D"."Jednostka kierująca 2" = "S"."Jednostka kierująca 2") OR ("D"."Jednostka kierująca 2" LIKE '%' ))
LibreOffice || Microsoft Office
fat_m
Posty: 5
Rejestracja: pt lip 23, 2010 7:05 pm

Re: Problem z kwerendą

Post autor: fat_m »

Po zastosowaniu Twojego kodu, kwerenda szuka rekordów tylko wg daty :(
OpenOffice 3.2.1 na Windows Vista
Arghil
Posty: 112
Rejestracja: sob lip 04, 2009 7:39 pm
Kontakt:

Re: Problem z kwerendą

Post autor: Arghil »

fat_m pisze:Po zastosowaniu Twojego kodu, kwerenda szuka rekordów tylko wg daty :(
Przekopiowałem tylko Twój kod i pozamieniałem

Kod: Zaznacz cały

 = '%' 
na

Kod: Zaznacz cały

LIKE '%'
Jak możesz to zamieść przykładowy plik, łatwiej będzie poprawić zapytanie.

Za późna pora była ostatnio ;), w sumie Twoje zapytanie sprowadza się do tego:

Kod: Zaznacz cały

SELECT "D"."Imię", "D"."Nazwisko", "D"."Data naprawy", "D"."Rodzaj naprawy", "D"."Miejsce naprawy", "D"."Jednostka kierująca 1", "D"."Jednostka kierująca 2" FROM "Dane" AS "D", "Szukanie" AS "S"
WHERE ("D"."Imię"  LIKE '%' ) AND  ("D"."Nazwisko" LIKE '%' ) AND ( "D"."Data naprawy" BETWEEN "S"."Data_od" AND "S"."Data_do" ) AND  ("D"."Rodzaj napraway" LIKE '%' ) AND ( ("D"."Miejsce naprawy" LIKE '%' ) AND ("D"."Jednostka kierująca 1" LIKE '%' ) AND ("D"."Jednostka kierująca 2" LIKE '%' )
a o to chyba nie chodziło?
LibreOffice || Microsoft Office
Arghil
Posty: 112
Rejestracja: sob lip 04, 2009 7:39 pm
Kontakt:

Re: Problem z kwerendą

Post autor: Arghil »

Gdyby tak zastosować trójwartościową logikę SQL - NULL dla pustych kolumn w tabeli Szukanie:

Kod: Zaznacz cały

SELECT "D"."Imię", "D"."Nazwisko", "D"."Data naprawy", "D"."Rodzaj naprawy", "D"."Miejsce naprawy", "D"."Jednostka kierująca 1", "D"."Jednostka kierująca 2" FROM "Dane" AS "D", "Szukanie" AS "S"
WHERE (( "D"."Imię" = "S"."Imię") OR  "S"."Imię" IS NULL ) AND (( "D"."Nazwisko" = "S"."Nazwisko") OR "S"."Nazwisko" IS NULL ) AND ( "D"."Data naprawy" BETWEEN "S"."Data_od" AND "S"."Data_do" ) AND (( "D"."Rodzaj naprawy" = "S"."Rodzaj naprawy") OR "S"."Rodzaj napraway" IS NULL ) AND (( "D"."Miejsce naprawy" = "S"."Miejsce naprawy") OR "S"."Miejsce naprawy" IS NULL) AND (( "D"."Jednostka kierująca 1" = "S"."Jednostka kierująca 1") OR "S"."Jednostka kierująca 1" IS NULL ) AND (( "D"."Jednostka kierująca 2" = "S"."Jednostka kierująca 2") OR "S"."Jednostka kierująca 2" IS NULL )
LibreOffice || Microsoft Office
fat_m
Posty: 5
Rejestracja: pt lip 23, 2010 7:05 pm

Re: Problem z kwerendą

Post autor: fat_m »

Załączyłem bazę danych. Tylko zawsze edytuj kwerendę w widoku SQL, inaczej się to "wykrzaczy". Zresztą sam zobacz.

EDIT
Działa 8-) Jestem Ci dozgonnie wdzięczny. Możesz podać tytuły jakiś dobrych książęk, albo inne źródło Twojej wiedzy?
Załączniki
Nowa Baza Danych.odb
(5.04 KiB) Pobrany 214 razy
OpenOffice 3.2.1 na Windows Vista
Arghil
Posty: 112
Rejestracja: sob lip 04, 2009 7:39 pm
Kontakt:

Re: Problem z kwerendą

Post autor: Arghil »

fat_m pisze: Jestem Ci dozgonnie wdzięczny. Możesz podać tytuły jakiś dobrych książek, albo inne źródło Twojej wiedzy?
W zasadzie odpowiednia będzie każda książka opisująca podstawy języka SQL. Do tego przydaje się dokumentacja wybranego silnika bazodanowego.
Bazy wbudowane OO.org korzystają z HSQLDB (wersja 1.8.x).
LibreOffice || Microsoft Office
ODPOWIEDZ