Thread View: pl.comp.bazy-danych
3 messages
3 total messages
Started by Adam
Fri, 19 May 2023 00:55
Najnowszy rekord
Author: Adam
Date: Fri, 19 May 2023 00:55
Date: Fri, 19 May 2023 00:55
40 lines
712 bytes
712 bytes
Witajcie. Dotyczy MS-SQL. Są dwie tabele, główna A i druga B. Potrzebuję wyrzucić tylko najnowsze rekordy. Powiedzmy, że jest baza książek i wypożyczeń. Przykładowo tabela książki A: ID_book, Book_Tytul 1, Faraon 2, Vinetou 3, Solaris tabela wypożyczenia B: ID_book, ID_wypoz, Osoba 2, 1, Jan Kowalski 2, 2, Anna Nowak 3, 3, Zenon Lubiany 3, 4, Olek Kwiatek 1, 5, Zuzia Nieduzia chcę w wyniku otrzymać ostatnie wypożyczenia, czyli: Book_Tytul, Osoba Vinetou, Anna Nowak Solaris, Olek Kwiatek Faraon, Zuzia Nieduzia Relackja 1:MANY a.ID_book = B.ID_book Totalne mam zaćmienie, nie potrafię do tego dołożyć distinct czy czegoś w tym rodzaju. Poratuje ktoś? -- Pozdrawiam. Adam
Re: Najnowszy rekord
Author: Adam
Date: Fri, 19 May 2023 14:31
Date: Fri, 19 May 2023 14:31
56 lines
1079 bytes
1079 bytes
Dnia Fri, 19 May 2023 00:55:08 +0200, Adam napisał(a): > Witajcie. > > Dotyczy MS-SQL. > > Są dwie tabele, główna A i druga B. > Potrzebuję wyrzucić tylko najnowsze rekordy. > > Powiedzmy, że jest baza książek i wypożyczeń. > > Przykładowo tabela książki A: > ID_book, Book_Tytul > 1, Faraon > 2, Vinetou > 3, Solaris > > tabela wypożyczenia B: > ID_book, ID_wypoz, Osoba > 2, 1, Jan Kowalski > 2, 2, Anna Nowak > 3, 3, Zenon Lubiany > 3, 4, Olek Kwiatek > 1, 5, Zuzia Nieduzia > > chcę w wyniku otrzymać ostatnie wypożyczenia, czyli: > Book_Tytul, Osoba > Vinetou, Anna Nowak > Solaris, Olek Kwiatek > Faraon, Zuzia Nieduzia > > Relackja 1:MANY a.ID_book = B.ID_book > > Totalne mam zaćmienie, nie potrafię do tego dołożyć distinct czy czegoś w > tym rodzaju. > Poratuje ktoś? SELECT A.Book_Tytul, B.Osoba FROM tabelaA A JOIN tabelaB B ON A.ID_book = B.ID_book JOIN ( SELECT ID_book, MAX(ID_wypoz) AS max_id_wypoz FROM tabelaB GROUP BY ID_book ) AS C ON B.ID_book = C.ID_book AND B.ID_wypoz = C.max_id_wypoz -- Pozdrawiam. Adam
Re: Najnowszy rekord
Author: Adam
Date: Fri, 19 May 2023 14:40
Date: Fri, 19 May 2023 14:40
74 lines
1432 bytes
1432 bytes
Dnia Fri, 19 May 2023 14:31:57 +0200, Adam napisał(a): > Dnia Fri, 19 May 2023 00:55:08 +0200, Adam napisał(a): > >> Witajcie. >> >> Dotyczy MS-SQL. >> >> Są dwie tabele, główna A i druga B. >> Potrzebuję wyrzucić tylko najnowsze rekordy. >> >> Powiedzmy, że jest baza książek i wypożyczeń. >> >> Przykładowo tabela książki A: >> ID_book, Book_Tytul >> 1, Faraon >> 2, Vinetou >> 3, Solaris >> >> tabela wypożyczenia B: >> ID_book, ID_wypoz, Osoba >> 2, 1, Jan Kowalski >> 2, 2, Anna Nowak >> 3, 3, Zenon Lubiany >> 3, 4, Olek Kwiatek >> 1, 5, Zuzia Nieduzia >> >> chcę w wyniku otrzymać ostatnie wypożyczenia, czyli: >> Book_Tytul, Osoba >> Vinetou, Anna Nowak >> Solaris, Olek Kwiatek >> Faraon, Zuzia Nieduzia >> >> Relackja 1:MANY a.ID_book = B.ID_book >> >> Totalne mam zaćmienie, nie potrafię do tego dołożyć distinct czy czegoś w >> tym rodzaju. >> Poratuje ktoś? > > SELECT A.Book_Tytul, B.Osoba > > FROM tabelaA A > > JOIN tabelaB B ON A.ID_book = B.ID_book > > JOIN ( > > SELECT ID_book, MAX(ID_wypoz) AS max_id_wypoz > > FROM tabelaB > GROUP BY ID_book > ) AS C > ON B.ID_book = C.ID_book AND B.ID_wypoz = C.max_id_wypoz Albo: SELECT A.Book_Tytul, B.Osoba FROM tabelaA A JOIN ( SELECT ID_book, Osoba, ROW_NUMBER() OVER (PARTITION BY ID_book ORDER BY ID_wypoz DESC) AS rn FROM tabelaB ) AS B ON A.ID_book = B.ID_book AND B.rn = 1 -- Pozdrawiam. Adam
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads