Here's the SQL query to find the number of distinct countries that supply each product and order the results in descending order by the number of distinct countries:

```
SELECT 
    ProductID, 
    ProductName, 
    COUNT(DISTINCT Country) AS NumDistinctCountries 
FROM 
    products 
    JOIN supplier_locations ON products.SupplierID = supplier_locations.SupplierID 
GROUP BY 
    ProductID, 
    ProductName 
ORDER BY 
    NumDistinctCountries DESC;
```

Explanation:
1. Join both the tables using the `SupplierID` column.
2. Group the results by `ProductID` and `ProductName`.
3. Count the distinct number of countries for each product using the `COUNT` and `DISTINCT` functions.
4. Sort the results in descending order of the number of distinct countries using the `ORDER BY` clause.
Date due tabelle, una per i prodotti con le colonne ProductID, ProductName e SupplierID e una per le ubicazioni dei fornitori con le colonne SupplierID, City e Country, scrivere una query SQL per trovare il numero di paesi distinti che forniscono ciascun prodotto e restituire i risultati in ordine decrescente in base al numero di paesi distinti.