Skocz do zawartości
PL
Szukaj na Pecetowiczu
  • Utwórz konto

Maksymalne rekordy w kwerendzie zagnieżdżonej


Rekomendowane odpowiedzi

Witam, mam taką bazę danych

obraz.png.9be2cebec129686bcc83551a7c060cdf.png

Próbuje wyświetlić najwyższe góry w danych pasmach, tj. do czasu kiedy nie dołączam do zapytania wyświetlającego najwyższe góry tabeli pasma wszystko jest OK,

SELECT gora, max(wysokosc) FROM gory GROUP BY gora ORDER BY wysokosc DESC LIMIT 7;

w momencie połączenia i pogrupowania po paśmie

SELECT gora, max(wysokosc), pasma.pasmo FROM gory JOIN pasma ON gory.id_pasmo=pasma.id_pasmo GROUP BY pasma.pasmo ORDER BY wysokosc DESC LIMIT 7;

pokazuje najwyższe góry, ale złe nazwy tych gór

Odnośnik do komentarza
Udostępnij na innych stronach

3 godziny temu, Zevcore napisał:

GROUP BY pasma.pasmo

Spróbuj pogrupować według kolumny "gora"

Odnośnik do komentarza
Udostępnij na innych stronach

(edytowane)

Góra może należeć jedynie do jednego pasma, ale musi leżeć w minimum jednym kraju.
Czyli góra <> pasmo - 1:1, góra <> kraj - 1:n.

Pomijam słabe nazewnictwo kolumn, ale ja spróbowałbym takiego query:

SELECT `g`.`gora` gora, max(`g`.`wysokosc`) wysokosc, `k`.`kraj` kraj, `p`.`pasmo` pasmo 
FROM `pasma` p
LEFT JOIN `gory` g ON `g`.`id_pasmo` = `p`.`id_pasmo` 
LEFT JOIN `kraje` k ON `k`.`id_kraj` = `g`.`id_kraj` 
GROUP BY `p`.`id_pasmo` 
ORDER BY wysokosc DESC;

Pisane z palca i może nie zadziałać.
Nie mam też jak przetestować, bo nie dałeś dumpa struktury.

Edytowane przez -n3veR
Odnośnik do komentarza
Udostępnij na innych stronach

Kontynuuj dyskusję

Dołącz do Pecetowicza, aby kontynuować dyskusję w tym wątku.

  • Dodaj nową pozycję...
  • Dodaj nową pozycję...