#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;