![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 19.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Cześć. Mam taki problem i nie wiem jak to obejść. Mam tabelę Obserwacje o takiej strukturze:
ID, Gatunek, Kwadrat, Kategoria, Obserwator a w niej rekordy: 1,Ptak,AA22,C1,Marek 2,Ssak,BB22,D3,Stachu 3,Ptak,AA22,C10,Jarek 4,Płaz,AB32,H1,Maria 5,Ptak,AB44,G1,Stachu Chcę skonstruować takie zapytanie aby mi zwróciło rekordy w takiej postaci: 2,Ssak,BB22,D3,Stachu 3,Ptak,AA22,C10,Jarek 4,Płaz,AB32,H1,Maria 5,Ptak,AB44,G1,Stachu tj. aby gatunek był unikalny w danym kwadracie (a jednocześnie żeby była wyswietlona tylko i wyłącznie jedna najwyższe kategoria w danym kwadracie (z uwzględnieniem sortowania alfabetycznego) Próbowałem wykonać takie zapytanie: SELECT DISTINCT Gatunek, kwadrat from Obserwacje . Wszystko niby ok. poza jednym wyjątkiem: nie wyświetla mi kolumn: ID, Kategoria oraz Obserwator Czy ktoś mógłby mi pomóc z tym problemem ? Z góry dziękuję i pozdrawiam |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 341 Pomógł: 40 Dołączył: 23.06.2009 Ostrzeżenie: (0%) ![]() ![]() |
po pierwsze poczytaj o normalizacji tabel. mysle ze gdybys zastosowal sie do tych zasad, problem zapytan bylby o wiele mniejszy.
po drugie:
Cytat Wszystko niby ok. poza jednym wyjątkiem: nie wyświetla mi kolumn: ID, Kategoria oraz Obserwator zobacz co napisales w zapytaniu, polecenie brzmi : wyświetl unikaty zbiorów dla pól GATUNEK i KWADRAT z tabeli.. więc dlaczego się dziwisz, że nie wyświetla ci pól ID, Kategoria oraz Obserwator, skoro o nie nie prosisz.... proponuje kurs sql popraw mnie jeśli się mylę wydaje mi sie ze nie jestes programista, i nie masz ambicji nim byc, a robisz to z potrzeby (fascynacji potrzeba ![]() napisz, na ile elastyczna jest ta struktura którą posiadasz, czy można by było ingerować w nią. jesli nie - coś wymyślimy, na tym co masz, ale nie będą to optymalne zapytania... j. |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 19.09.2011 Ostrzeżenie: (0%) ![]() ![]() |
Cytat po pierwsze poczytaj o normalizacji tabel. mysle ze gdybys zastosowal sie do tych zasad, problem zapytan bylby o wiele mniejszy. Czepiłeś się, że nie wpisałem w miejscach kwadratów, gatunków itp, że są wstawiane id pobrane z powiązanych tabel a jest wpisany zwykły tekst... Bazę mam optymalną, tylko zwyczajnie nie miałem czasem na opisywanie całej struktury tutaj na forum, bo nie o to chodzi w moim poście... ![]() Ale, żeby nie było offtop, kontynuuję ![]() Tak, wiem, że w powyższym zapytaniu DISTINCT nie proszę o dane, które mi są potrzebne, ale poprosiłem o pomoc, jak skonstruować zapytanie aby te dane zostały zwrócone. Dodam też, że próbowałem: Kod SELECT id, id_gatunku, id_kwadratu, max(id_kategorii), id_obserwatora GROUP BY id_gatunku, id_kwadratu ale znowu zwraca mi głupoty... ![]() |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Na początek proponuję wykonać zapytanie:
Potem proponuję wykonać takie zapytanie (takie samo):
Potem proponuję sięgnąć po jakiś podręcznik (porządny) do ANSI SQL (broń Boże do MySQL!) i nauczyć się porządnie SQL. A rozwiązanie Twego problemu to:
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.07.2025 - 12:25 |