konto usunięte

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

editTen post został edytowany przez Autora dnia 19.09.16 o godzinie 09:28

konto usunięte

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Zrobiłem tak

Rozumiem ,że klucze główne to: PRAC_ID oraz AUD_ID. Audytorzy wchodzą w skład audytu ale nie są kluczami głównymi tym bardziej jeszcze dwoma. Jeśli się mylę to przepraszam.

Chyba chodzi CI o to:

Pracownik:
PRAC_ID
Imie
Nazwisko

Audytorzy:
AUD_ID
Imie
Nazwisko

Audyt:
AUD_ID
PRAC_ID
Data_audytu

 
SELECT au.DATA_AUDYTU,
au.IMIE ||' '|| au.NAZWISKO AS dane_audytora,
p.IMIE ||' '|| p.NAZWISKO AS dane_pracownika
FROM Pracownicy p INNER JOIN Audyt a ON p.PRAC_ID = a.PRAC_ID
INNER JOIN Audytorzy au ON au.AUD_ID = a.AUD_ID


lub

 
SELECT au.DATA_AUDYTU,
au.IMIE ||' '|| au.NAZWISKO AS dane_audytora,
p.IMIE ||' '|| p.NAZWISKO AS dane_pracownika
FROM Pracownicy p,
Audyt a,
Audytorzy au
WHERE p.PRAC_ID = a.PRAC_ID
AND au.AUD_ID = a.AUD_ID
Ten post został edytowany przez Autora dnia 10.06.13 o godzinie 21:09

konto usunięte

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

klejenie ciągów tekstowych w Accessie/Excelu to & a nie ||

konto usunięte

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Przemysław R.:
klejenie ciągów tekstowych w Accessie/Excelu to & a nie ||
Oracle'owiec :D

konto usunięte

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

editTen post został edytowany przez Autora dnia 19.09.16 o godzinie 09:28

konto usunięte

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Przemysław R.:
klejenie ciągów tekstowych w Accessie/Excelu to & a nie ||

mój błąd :D nie doczytałem ,że excel / access :)

Co do excela pewnie inni szybciej pomogą niż ja :)Ten post został edytowany przez Autora dnia 11.06.13 o godzinie 07:59
Sławomir Szafraniec

Sławomir Szafraniec Programista baz
danych MS SQL

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Konrad B.:

Nie do końca o to chodzi - mam 2 tabele : Pracownicy i Audyty.
Każdy Audyt poza właściwymi dla siebie polami, ma 4 pola z których dane podczas tworzenia rekordu pobierane są z tabeli Pracownicy.PRAC_ID. Nie chcę, żeby użytkownik który wyświetla rekord audytu widział PRAC_ID, tylko w to miejsce PRAC_NAZWISKO & PRAC_IMIE. Coś jak wyszukaj pionowo :)

Witam,

Przygotowałem zapytanie, które wyciąga stosowne dane. Wygląda ono następująco:

SELECT
Audyty.AUD_ID,
Audyty.AUD_DATA,
[Prac1].[PRAC_IMIE] & " " & [Prac1].[PRAC_NAZWISKO] AS Audytor1,
[Prac2].[PRAC_IMIE] & " " & [Prac2].[PRAC_NAZWISKO] AS Audytor2
FROM
(
Audyty
LEFT JOIN Pracownicy AS Prac1
ON Prac1.PRAC_ID = Audyty.AUD_AUDYTOR1_ID
)
LEFT JOIN Pracownicy AS Prac2
ON Audyty.AUD_AUDYTOR2_ID = Prac2.PRAC_ID;

Na końcu frazy SELECT można dopisać kolejne pola z tabelki Audyty.

O ile rozumiem, w audycie mogą brać udział dwie osoby. W związku z tym w naszym zapytaniu tabelka Pracownicy została wzięta dwukrotnie - raz jako Prac1, drugi raz jako Prac2.
W razie, gdyby w audycie mogło uczestniczyć 3 lub więcej osób, tabelkę Pracownicy należałoby wziąć odpowiednią ilość razy - za każdym razem z innym aliasem, a następnie dodać analogiczne złączenia.

Nie jestem do końca pewien, czy audyt musi zawierać dokładnie dwie osoby. Na wszelki wypadek w zapytaniu użyłem lewostronnego złączenia zewnętrznego pomiędzy tabelką Audyty, a każdą z tabelek Pracownicy. Złączenie to powoduje, że z tabelki Audyty bierzemy wszystkie rekordy, a z tabelki Pracownicy - tylko te, które spełniają warunki złączenia.

Pozdrawiam,
Sławek.

PS. Bardzo dawno nie pisałem zapytań w Accessie. Na wszelki wypadek sprawdziłem, jak to zapytanie działa na danych przykładowych. Wygląda na to, że powinno być OK.
Marcin Miga

Marcin Miga Programista. Po
prostu programista.

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Jeśli to Access, to dla pewności daj Nz(). (odpowiednik IFNULL lub COALESCE) Czy na Excelu zadziała, to nie wiem. Powinno bo też korzysta z JET, ale nie wiem.

konto usunięte

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Marcin M.:
Jeśli to Access, to dla pewności daj Nz(). (odpowiednik IFNULL lub COALESCE) Czy na Excelu zadziała, to nie wiem. Powinno bo też korzysta z JET, ale nie wiem.

NZ to wymysł Accessa
w SQL-i działa IIF([pole] not is null;[pole];[pole 2])
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Zacznij od rozbicia tabeli 2 na 2 osobne tabele.
Jedną dotyczącą audytów, drugą audytorów w tych audytach.
Nie będziesz miał fefnstu kolumn na id_audytora.
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Przemysław R.:
Marcin M.:
not is null
is not null ?

konto usunięte

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Sławomir B.:
Przemysław R.:
Marcin M.:
not is null
is not null ?

not isNull([pole])
Marcin Miga

Marcin Miga Programista. Po
prostu programista.

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Sławomir B.:
Przemysław R.:
Marcin M.:
not is null
is not null ?
Cytuj prawidłowo. Nic takiego nie napisałem...
Marcin Miga

Marcin Miga Programista. Po
prostu programista.

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Przemysław R.:
Marcin M.:
Jeśli to Access, to dla pewności daj Nz(). (odpowiednik IFNULL lub COALESCE) Czy na Excelu zadziała, to nie wiem. Powinno bo też korzysta z JET, ale nie wiem.

NZ to wymysł Accessa
w SQL-i działa IIF([pole] not is null;[pole];[pole 2])
Toć to przecież napisałem - "Jeśli to Access..".
Sławomir Broda

Sławomir Broda VBA, Excel, Access,
SAP i wszystko
związane z
automatyzac...

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Marcin M.:
Sławomir B.:
Przemysław R.:
Marcin M.:
not is null
is not null ?
Cytuj prawidłowo. Nic takiego nie napisałem...
Jest prawidłowo.

konto usunięte

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

editTen post został edytowany przez Autora dnia 19.09.16 o godzinie 09:23
Sławomir Szafraniec

Sławomir Szafraniec Programista baz
danych MS SQL

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Konrad B.:
Mogę prosić jeszcze o pełną składnię dla 5 osób( bo tyle akurat znajduje się w mojej tabeli z nagłówkiem audytu)
Idąc za powyższym przykładem nie jestem w stanie złączyć 3 i więcej osób. Zakładam że źle osadzam nawiasy, a może to coś innego. Excel wyrzuca mi błąd " niepełne źródło danych".

Witam ponownie.

Mam wrażenie, że zaproponowane przez Pana zapytanie ma prawidłową składnię. Można by ew. dodać spację w każdym polu, w którym jest składane imię i nazwisko audytora.

Sugerowałbym sprawdzenie 2 drobiazgów:
1. Czy może Pan utworzyć w obrębie bazy Accessa zapytanie o podanym przez Pana kodzie SQL i uruchomić je?

2. Jeśli są problemy z uruchomieniem zapytania: czy nazwy pól i tabel, użyte w zapytaniu, są na pewno takie same, jak w Pańskiej bazie danych (specyfikacja podana przez Pana w początkowym opisie problemu zawierała nieco inne nazwy)?

Przyznam się szczerze, że nie uruchamiałem zapytań Accessa z poziomu Excela.

Pozdrawiam,
Sławek

PS
Chciałbym też zwrócić uwagę na problem, sygnalizowany już wcześniej przez innych Kolegów na forum. Chodzi o fakt, że w tabeli związanej z audytami ma Pan 5 różnych pól odwołujących się do tabeli pracowników. Może to prowadzić do sporych kłopotów przy zarządzaniu danymi. Jeśli chciałby Pan korzystać z bazy w dłuższym okresie czasu, można by rozważyć jej normalizację.
Oskar S.

Oskar S. Inżynier Serwisu

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

(select wm_concat(kod_proc) from wyk_elecz w1 where w1.klasyf_proc is not null and pob.id_pob=w1.id_pob) as "Procedury_ICD9",

Z racji tego iż siedzę już trochę nad tym może ktoś będzie wstanie mi pomóc a mianowicie podczas generowania danego zapytania z aplikacji pojawia się problem, "A delimited string is too long." rozumiem że długość wiersza jest zbyt długa aby dana aplikacja mogła to obsłużyć są to wartości numeryczne może trzeba to jakoś przekonwertować niestety nigdy tego nie robiłem może ktoś pomóc ?!
Sławomir Szafraniec

Sławomir Szafraniec Programista baz
danych MS SQL

Temat: proste podzapytanie SQL (Excel / Access) - pomoc w...

Witam,

Chciałbym się upewnić, czy podane przez Pana podzapytanie jest uruchamiane na bazie Oracle?

Jeśli tak, szczegółowe informacje na temat funkcji WM_CONTACT znajdzie Pan pod adresem:
http://www.dba-oracle.com/t_wm_concat_sql_function.htm

Są tam również wskazówki, w jaki sposób można zmienić długość ciągu zwracanego przez tę funkcję. Chciałbym też podkreślić, że decyzja, jaka powinna być szerokość tego ciągu, zależy wyłącznie od Pana.

Warto zwrócić uwagę, że funkcja WM_CONCAT nie jest wspierana przez Oracle - zamiast niej jest zalecana funkcja LISTAGG (informację na ten temat znajdzie Pan na końcu artykułu).

Pozdrawiam,
Sławek



Wyślij zaproszenie do