MySql zmniejszenie ilości wyciągniętych danych - wsparcie intelektualne

0

Witam, mam proste zadanie do wykonania, mianowicie:
Mam tabele o nazwie **country ** w której znajdują kolumny z nazwami Państw i Regionów oraz zadanie do wykonania;
Przyjmijmy definicję sąsiedztwa krajów jako leżenie w tym samym regionie. Wy-pisz wszystkie pary sąsiadów (Uwaga: jeśli wypisujemy parę (a,b) to nie parę (b,a)).
Dla z wizualizowania jakieś 10 wierszów:

+----------------------+---------------------------+
| Name                 | Region                    |
+----------------------+---------------------------+
| Aruba                | Caribbean                 |
| Afghanistan          | Southern and Central Asia |
| Angola               | Central Africa            |
| Anguilla             | Caribbean                 |
| Albania              | Southern Europe           |
| Andorra              | Southern Europe           |
| Netherlands Antilles | Caribbean                 |
| United Arab Emirates | Middle East               |
| Argentina            | South America             |
| Armenia              | Middle East               |
+----------------------+---------------------------+

to co ja próbowałem zrobić to:
9. ```plsql
select a.Name,b.Name from country a, country b where (a.Region = b.Region) and a.Name != b.Name;

Niestety mamy tutaj dwukrotnie policzony pary, ponieważ są pary (a,b) oraz (b,a), jak pozbyć się tego nadmiaru?
0

order by + distinct

0

Próbowałem, ale chyba jeszcze nie czuję składni odpowiednio dobrze bo rzuca mi błędy.
Jak by to wg. Ciebie powinno wyglądać w zapytaniu ?
tak by nie było następującego wyniku

+----------------------+---------------------------+
| Name                 | Name                      |
+----------------------+---------------------------+
| Albania              | Andorra                   |
| Andorra              | Albania                   |
+----------------------+---------------------------+
3
select  a.Name,b.Name from country a, country b where (a.Region = b.Region) and a.Name < b.Name;  
3
select  a.Name,b.Name from country a, country b where (a.Region = b.Region)

To daje Ci pary "każdy z każdym"

select  a.Name,b.Name from country a, country b where (a.Region = b.Region) and (a.Name < b.Name)

Wybiera tylko te pary, w których pierwszy element ma "mniejszą" nazwę. W przypadku porównywania tekstu "mniejsza" nazwa to taka, która jest wcześniej w kolejności alfabetycznej. I dzięki temu (Albania, Andora) się wyświetli, ale już (Andora, Albania) nie.

Przy okazji niejako usuwamy pary (Andora, Andora) - nie spełniają warunku z tą kolejnością alfabetyczną.

1 użytkowników online, w tym zalogowanych: 0, gości: 1