![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 13.09.2006 Skąd: Poland Ostrzeżenie: (0%) ![]() ![]() |
Witam, nie wiem jak wykonać następującą rzecz. Chcę wybrać z tabeli rekordy DISTINCTem, wg. jednej kolumny, ale pobrać również wartości innych kolumn tej tabeli.
Nie wiem, czy to jest jasne, ale chodzi po prostu o distinct jednej kolumny, ale z wszystkimi innymi kolumnami w tym wierszu. W pseudojezyku SELECT DISTINCT(pole1) ORAZ wszystkie inne FROM table WHERE cos tam. Nie wiem, jak to skonstruować w MySQL. Pozdrawiam. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
niestety DISTINCT to jest klauzura, która mówi, że dwie takie same krotki nie mogą się pojawić i nie dotyczy to pojedynczej kolumny.
Może podaj swoją strukturę danych i powiedz dokładnie co chcesz osiągnąć Pozdrawiam |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 13.09.2006 Skąd: Poland Ostrzeżenie: (0%) ![]() ![]() |
Hej. Dzięki za odzew.
A więc mam taką tabelkę: ![]() i chcę wybrać DISTINCTem pole entry_id, ale później, kiedy będę robił fetch - chciałbym mieć również dane, które są w wierszach obok entry_id - czyli takie jak user_id, site_id i w ogóle wszystkie. Chcę po prostu wszystkie dane, ale z unikalnych wierszy entry_id. Pozdrawiam! |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 48 Pomógł: 0 Dołączył: 4.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
Musisz zagregować dane z tabli oraz wskazać który wiersz z tego zagregowanego zbioru cię interesuje - aby wskazać który najlepiej wykorzystać klucz głowny (id) i wywołać na nim jakąś funkcję zwracajaca jeden element: max() albo min()
Czyli najlepiej zrobić tak: select min(id) as id from tabela group by entry_id teraz wystarczy już tylko zrobić joina z właściwą tabelą i gotowe: select * from (select min(id) as id from tabela group by entry_id) as q1 NATURAL JOIN (select * from tabela) as q2 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 1 116 Pomógł: 119 Dołączył: 10.05.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
popraw mnie jeśli nie rozumiem, chcesz aby wynikiem było:
Kod entry_id | user_id | site_id | rating | ---------+---------+---------+-----------+ 3 | 37653 | 1 | 5,4,2,3,1 | 4 | 37653 | 1 | 1 | 6 | 37653 | 1 | 5 | jeśli chcesz taki wynik to niestety się nie da, jedyne co w jednym zapytaniu osiągniesz to coś agregującego, na przykład maksymalny rating lub sumę wszystkich ratingów:
niestety wydaje mi się że to co chcesz osiągnąć nie da się po prostu za pomocą 1 zapytania z DISTINC, chyba że źle rozumiem EDIT: w zasadzie DISTINCT w moich przykładach nie ma zastosowania, można go usunąć Ten post edytował Cezar708 10.10.2007, 11:25:48 |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 26 Pomógł: 0 Dołączył: 13.09.2006 Skąd: Poland Ostrzeżenie: (0%) ![]() ![]() |
Niekoniecznie tak, jak podałeś na 1 obrazku. Nie chcę wszystkich ratingów, to był tylko przykład. Chcę po prostu całe wiersze, ale ograniczone DISTINCTem 1 kolumny.
Dzięki wszystkim, którzy zabrali głos w dyskusji. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 23.06.2025 - 07:28 |