Re: special join

Jan Novak <[email protected]> Tue, 8 Sep 2020 12:53:43 +0200
Newsgroups comp.databases.mysql
Organization MB-NET.NET for Open-News-Network e.V.
Message-ID <[email protected]>
Am 07.09.20 um 19:42 schrieb J.O. Aho:
> What do you mean as first?
> 
>   - Lowest ip-number (string or value vise)?
>   - Highest ip-number (string or value vise)?
>   - First line inserted for the server (lowest id or oldest timestamp)?
> 
> FROM server
>   s
> INNER JOIN (SELECT MIN(p2.PORT_ID) PORT_ID, p2.SERVER_ID FROM port p2 
> WHERE p2.SERVER_ID = s.SERVER_ID GROUP BY p2.SERVER_ID) AS port2 ON 
> port2.SERVER_ID = s.SERVER_ID
> INNER JOIN (SELECT MIN(i2.IP_ID) IP_ID, p2.SERVER_ID FROM ip i2 WHERE 
> i2.SERVER_ID = s.SERVER_ID GROUP BY p2.SERVER_ID) AS ip2 ON 
> ip2.SERVER_ID = s.SERVER_ID
> INNER JOIN ip i ON i.SERVER_ID = server.ID
>   and i.IP_ID = ip2.IP_ID
> INNER JOIN port p ON p.SERVER_ID = server.ID
>   and p.PORT_ID = port2.PORT_ID
> WHERE server.DELETED = 0
> 
> 
> It does have two sub selects, which can slow things down a lot if you 
> don't have indexes.


Your suggestion is working also in different ways (i.e. lowest/highest IP).

Thanks a lot.

Jan