Sei così vicino!
Dal momento che dici che stai visualizzando il paese e l'anno da A e limitando da A. Country
della Turchia, la Turchia è tutto ciò che vedrai. È necessario modificare le selezioni in modo che siano B.country
e B.year
o cambia la clausola where in B.country
.
Questo sta usando un cross join che diventerà più lento più record ci sono in una tabella.
SELECT DISTINCT b.Country, b.Year
FROM table1 AS a,
table1 AS b
WHERE a.Year=b.Year
and a.Country='Turkey';
potrebbe essere scritto come... e probabilmente avrebbe lo stesso piano di esecuzione.
SELECT DISTINCT b.Country, b.Year
FROM table1 AS a
CROSS JOIN table1 AS b
WHERE a.Year=b.Year
and a.Country='Turkey';
O Questo utilizza un INNER JOIN che limita il lavoro che il motore deve fare e non soffre del degrado delle prestazioni che farebbe un cross join.
SELECT DISTINCT a.Country, a.Year
FROM table1 AS a
INNER JOIN table1 AS b
on a.Year=b.Year
and b.Country='Turkey';
PERCHE':
Considera cosa farà il motore SQL quando si verifica il joinA B
+------------+------+--------+------------+------+--------+
| A.Country | Rank | Year | B.Country | Rank | Year |
+------------+------+--------+------------+------+--------+
|France | 55 | 2000 |France | 55 | 2000 |
+------------+------+--------+------------+------+--------+
|Canada | 30 | 2000 |France | 55 | 2000 |
+------------+------+--------+------------+------+--------+
|Turkey | 78 | 2000 |France | 55 | 2000 |
+------------+------+--------+------------+------+--------+
|France | 55 | 2000 |Canada | 30 | 2000 |
+------------+------+--------+------------+------+--------+
|Canada | 30 | 2000 |Canada | 30 | 2000 |
+------------+------+--------+------------+------+--------+
|Turkey | 78 | 2000 |Canada | 30 | 2000 |
+------------+------+--------+------------+------+--------+
|France | 55 | 2000 |Turkey | 78 | 2000 |
+------------+------+--------+------------+------+--------+
|Canada | 30 | 2000 |Turkey | 78 | 2000 |
+------------+------+--------+------------+------+--------+
|Turkey | 78 | 2000 |Turkey | 78 | 2000 |
+------------+------+--------+------------+------+--------+
Quindi quando hai detto mostra A.Country
e A.Year
dove A.Country
è la Turchia, puoi vedere tutto ciò che può restituire è la Turchia (a causa del distinto solo 1 record)
Ma se fai B.Country
è la Turchia e mostra A.Country
, avrai Francia, Canada e Turchia!