🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.bazy-danych
Article #194475

Re: 2 limity

#194475
From: PawelS cbrbob(at)wbcd(dot)pl
Date: Sun, 14 Jun 2015 07:29
48 lines
2788 bytes
merlin pisze:
> On Friday, 5 June 2015 16:33:40 UTC+2, Leszek Zur  wrote:
>> Baza MySQL.
>> Mam tabelę z kolumnami: państwo, miasto, mieszkancy.
>> W tabeli mieszkańcy podana jest ilość mieszkańców danego miasta.
>> Chce napisać zapytanie, które zwróci mi tą tabelę ale z 2 limitami.
>> Chcę, żeby zwróciło mi maksimum x miast ale żeby z każdego państwa było 
>> maksimum y miast o największej liczbie mieszkańców.
>>
>> Przykładowo dla x=5 i y=2 i następującej tabeli:
>> Francja	Paryż		2000
>> Francja	Lille		500
>> Polska	Warszawa	1000
>> Polska	Wrocław		700
>> Polska	Opole		500
>> Niemcy	Berlin		2000
>> Niemcy	Dortmund	1000
>> Włochy	Rzym		1500
>>
>> chcę żeby odrzuciło mi Opole (bo przekroczony y dla Polski), oraz 
>> Dortmund i Rzym (bo przekroczony x).
>> Do tej pory robiłem zapytanie o listę wszystkich państw, dla każdego 
>> państwa pobierałem listę największych miast ograniczoną przez y, 
>> zliczałem ile już mam miast i jak osiągnąłem x to kończyłem.
>>
>> Może da się to zapisać jako jedno zapytanie, które będzie pewnie szybsze 
>> od serii wielu mniejszych ?
>>
>> Leszek
> 
> Ciepło? 
Blisko ?

> mysql> select *  from miasta having populacja > 500 order by 3 desc ;
> +---------+----------+-----------+
> | panstwo | miasto   | populacja |
> +---------+----------+-----------+
> | Francja | Paryz    |      2000 |
> | Niemcy  | Berlin   |      2000 |
> | Wlochy  | Rzym     |      1500 |
> | Polska  | Warszawa |      1000 |
> | Niemcy  | Dortmund |      1000 |
> | Polska  | Wroclaw  |       700 |
> +---------+----------+-----------+
> 6 rows in set (0,00 sec)
Moim skromnym zdaniem zdaniem podałeś rozwiązane znając dane wejściowe.
Teraz podziel sobie zawartość kolumny "populacja" przez 10
i sprawdź czy zapytanie w dalszym ciągu zwraca oczekiwany wynik ?
Technical Details
Message-ID: <mljah0$816$1@node1.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <mksc06$7v5$1@news.vectranet.pl> <738cba05-7f80-4922-a4cb-cc80f1bcada8@googlegroups.com>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: "PawelS cbrbob(at)wbcd(dot)pl" <fake@email.org>
Newsgroups: pl.comp.bazy-danych
Subject: Re: 2 limity
Date: Sun, 14 Jun 2015 09:29:36 +0200
Organization: ATMAN - ATM S.A.
Lines: 48
Message-ID: <mljah0$816$1@node1.news.atman.pl>
References: <mksc06$7v5$1@news.vectranet.pl> <738cba05-7f80-4922-a4cb-cc80f1bcada8@googlegroups.com>
NNTP-Posting-Host: host-89-231-96-70.warszawa.mm.pl
Mime-Version: 1.0
X-Trace: node1.news.atman.pl 1434266976 8230 89.231.96.70 (14 Jun 2015 07:29:36 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Sun, 14 Jun 2015 07:29:36 +0000 (UTC)
User-Agent: Thunderbird 2.0.0.24 (X11/20110622)
In-Reply-To: <738cba05-7f80-4922-a4cb-cc80f1bcada8@googlegroups.com>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit