Какие автомобили были арендованы вместе, сколько раз? Какой из них проще использовать MySQL или python?

#python #mysql #sql

#python #mysql #sql

Вопрос:

У меня есть проект о github, но я представляю как rent a car db для лучшего понимания. Я должен найти, какие автомобили были арендованы вместе, сколько раз из db. У меня есть таблица 2: аренда и автомобиль.

 Rent Table
 ---- --------- 
| id | date    |
 ---- --------- 
| 68 | 2010    |
| 2  | 2011    |
| 7  | 2012    |
 ---- --------- 
Car Table
 --------- --------- ------- 
| model   | rent_ID | km    |
 --------- --------- ------- 
| kia     | 68      | 4343  |
| bmw     | 68      | 7679  |
| kia     | 2       |  8464 |
| hyundai | 2       | 1234  |
| bmw     | 2       | 9004  |
| kia     | 7       | 11001 |
| hyundai | 7       | 7654  |
 --------- --------- ------- 
 

Мне нравится этот тип возврата

  ------- ------------- ------ 
| model | model       |count |
 ------- ------------- ------ 
| kia   | bmw         | 2    |
| kia   | hyundai     | 2    |
| bmw   | hyundai     | 1    |
 ------- ------------- ------ 
 

Я попробовал несколько запросов, чтобы найти это, но не могу. Кроме того, я думаю, что могу сделать это с помощью многомерного массива на python. Но если у меня много машин, это может занять много времени. Какой способ лучше и оптимален?

Ответ №1:

Это просто сделать в MySQL. Чтобы получить подсчеты для любой пары моделей, используйте самосоединение и агрегирование:

 select c1.model, c2.model, count(*)
from car c1 join
     car c2
     on c1.rent_id = c2.rent_id and
        c1.model < c2.model
group by c1.model, c2.model;