|
|
||||||
|
#1
|
|
|
|
|
Witam
mam następujący problem - jak w accessie połączyć dwie tabele, tak żeby z pierwszej pojawiły się wszystkie rekordy a z drugiej tylko te które pasują? Wydawało mi się, że to outer join, więc daję przykład: Tabela A ma jedna kolumne: id_A 1 2 3 4 Tabela B ma dwie koulmny (id_B i temperatura) z danymi: id_B temperatura 1 36 2 37 1 38 4 36 Chcę dostać wynik w postaci średniej temperatury w 'grupach', ale w ten sposób żeby pojawiły się _wszystkie_ grupy (także te, których w tabeli B nie ma): 1 37 2 37 3 - 4 36 Robiąc poniższe zapytanie dostaje oczywiście to co chcę, ale pominięte są te grupy dla których nie ma danych w tabeli B SELECT A.id_A, AVG(B.temperatura) FROM A LEFT OUTER JOIN B ON A.id_A=B.id_B GROUP BY A.id_A; dostaję wynik: 1 37 2 37 4 36 proszę o pomoc - jak zrobić żeby pojawiły się _wszystkie_ grupy? robiłem też odpowiednie sprzężenie (wszystkie rekordy z A, i tylko te z B które są równe danym z A) ale to nic nie dało. OUTER chyba powinien za to odpowiadać, ale przeczytałem gdzieś, że on w ogóle nie działa, więc już nie mam pojęcia co trzeba zrobić.. pozdrawiam Marcin |
|
|
|
#2
|
|
|
|
|
Użytkownik "Marcin" <mlody.bog> napisał w wiadomości
news:rdt1 > Witam > > mam następujący problem - jak w accessie połączyć dwie tabele, tak żeby z > pierwszej pojawiły się wszystkie rekordy a z drugiej tylko te które > pasują? (...) > Robiąc poniższe zapytanie dostaje oczywiście to co chcę, ale pominięte są > te > grupy dla których nie ma danych w tabeli B > > SELECT A.id_A, AVG(B.temperatura) > FROM A LEFT OUTER JOIN B ON A.id_A=B.id_B > GROUP BY A.id_A; > > dostaję wynik: > 1 37 > 2 37 > 4 36 > > proszę o pomoc - jak zrobić żeby pojawiły się _wszystkie_ grupy? > robiłem też odpowiednie sprzężenie (wszystkie rekordy z A, i tylko te z B > które są równe danym z A) ale to nic nie dało. Hmm, to może spróbuj: Select A.id_A, T.AvgTemp From A Left Join (Select id_B, Avg(temperatura) As AvgTemp From B Group By id_B) As T On A.id_A = T.id_B Pozdrawiam Grzegorz |
|
#3
|
|
|
|
|
Grzegorz Danowski <gdn__na> napisał(a):
> Hmm, to może spróbuj: > > Select > A.id_A, T.AvgTemp > From > A > Left Join > (Select > id_B, > Avg(temperatura) As AvgTemp > From > B > Group By > id_B) As T > On > A.id_A = T.id_B doskonale :) teraz oczywiście dziwię się jak mogłem na to nie wpaść, ale może to dlatego, że nie wszystkie bazy obsługują podzapytania. dzięki wielkie! pozdrawiam Marcin |
|
|
| Podobne wątki | |
| LEFT OUTER JOIN Witam grupe mam prosbe o mala pomoc z zapytaniem SQL - co jest nie tak w zapytaniu: SELECT obr.nrzam, obr.nrpoz, nag.klient, obr.nazwa, obr.ilosc, obr.datazam, obr.status,... |
|
| [Oracle] OUTER JOIN Zauważyłem różnicę przy wykonywaniu zapytania w 8i (9i) oraz w 10g. W 8i: SQL> select version from v$instance 2 / VERSION ----------------- 8.1.7.4.0 SQL> select rownum,... |
|
| Laickie outer join Ponizej jest zapytanie sql (mssql 2005), ktore wybiera slowa kluczowe (kazde ma pole jezyka ) i laczy to z tabela jezykow. Jesli nie ma slowa w danym jezyku to obok jezyka... |
|
| Left Outer Join - problem Mam problem z pewnym selektem, left outer joinem i where Czyli mam dwie tabele: Tabela nr 1: Panstwa Panstwa_id | Panstwo -----------------+------------------ 1 ... |
|
|
Czasy w strefie GMT. Teraz jest 23:13. | Privacy Policy
|