Wpis z mikrobloga

Mam dwie tabele SQL(tab1, tab2). Jak zrobić żeby wyświetlało w DataGridView tab1 z dodatkową kolumną, która znajduje się w tab2. Dla zobrazowania uznajmy, że w tab1 jest np. 'id', 'imię', 'nazwisko' a w tab2 jest 'id' osób z tab1 i np. jakieś kwoty pieniędzy. Chcę żeby wyświetlała się lista osób z sumą pieniędzy z tab2 dla danego 'id'. Czy to się da jakoś w jednym zapytaniu zrobić? Ja próbowałem wyświetlić tab1 i dodać niepowiązaną kolumnę i w pętli dodać te wartości ale wychodzi że jest poza indeksem tak jakby nie widziało tej nowej kolumny, można jedynie ją uzupełniać "z palca".

#programowanie #csharp #visualstudio #sql #pytaniedoeksperta
  • 26
@kiboq:

możesz też subquery zrobić np select id, imie, (select sum(kwota) from tab2 st where st.id = t1.id) from tab1 t1

aczkolwiek subquery nie sa polecane jeśli nie trzeba ich stosować, ale są często używane przez poczatkujacych bo są łatwiejsze do ogarniecia niż czasem skomplikowane joiny - za to potrafią się dłużej wykonywać (czasem serio dużo dłużej)
@qubeq: @Yahoo_: @mikkeboss: @gajowy_marucha: @ihwar:

SELECT b.wartosc, a.idpracownika FROM Pracownicy AS a INNER JOIN

Wartosci AS b ON a.id
pracownika = b.idpracownika

Takie coś działa z tym, że chcę żeby przy pracowniku wyświetlała się suma wartości a nie tylko pierwsza z brzegu..

próbowałem tak:

SELECT sum(b.wartosc), a.id
pracownika FROM Pracownicy AS a INNER JOIN

Wartosci AS b ON a.idpracownika = b.idpracownika

z tym,
@ihwar:

SELECT SUM(b.wartosc), a.idpracownika, a.nazwisko

FROM Pracownicy AS a INNER JOIN


Wartosci AS b ON a.id
pracownika = b.idpracownika

GROUP BY a.id
pracownika
@kiboq:

spoko, gdybyś chciał więcej danych zobaczyć to możesz coś takiego prościej zrobić:

SELECT * FROM Pracownicy p

inner join

(

SELECT SUM(b.wartosc) as LICZBA , a.idpracownika

FROM Pracownicy AS a INNER JOIN

Wartosci AS b ON a.idpracownika = b.idpracownika

GROUP BY a.idpracownika

) j on j.idPracownika = p.idpracownika
@ihwar: A dałby się się tak zrobić, żeby tam gdzie jest: SELECT SUM(b.wartość)[...] żeby zamiast sumy wszystkich wartości liczyło ilość rekordów z konkretną wartością. żeby w dodatkowej kolumnie kolo pracownika było np. 20 (ilość rekordów jedynie z wartością 15zł)