MySql объединить две таблицы с именами столбцов - PullRequest
0 голосов
/ 26 августа 2018

У меня есть эти таблицы в моей базе данных MySQL:

Таблица автомобилей:

+----Cars   Table-----+
+---------------------+
| id | BMW   | KIA    |-and another cars
+----+----------+-----+
| 1  | M5    | Rio    |
| 2  | Z1    | Serato |
| 3  | X5    | Sorento|

Как таблица:

+----------------------+-----+
| id | Cars_id| Cars   |ip   |
+----+----------+------+-----+
| 1  |   1    | KIA    |1.0.1|
| 2  |   1    | BMW    |1.0.1|

В основном, у стола Cars есть больше автомобилей Марка и их моделей.

Мой вопрос такой: как объединить эти таблицы - Like.Cars_id = Cars.id и Like.Cars = Cars.Column names?.

Итак, я бы хотел запрос, подобный этому:

SELECT Cars.BMW, Cars.KIA,  COUNT(Like.ip) AS likes
FROM CARS_Table
    LEFT JOIN Like_table
        ON Cars.id = Like.Cars_id AND what?

Ответы [ 2 ]

0 голосов
/ 26 августа 2018

вы должны нормализовать таблицу таким образом

Brand 
id, name  
1, BMW 
2, KIA 
3, ...

cars 
id, id_brand, car_name 
1, 1, M5 
2, 1, Z1 
3, 1, X5 
4, 2, Rio 
5, 2, Serato 
6, 2, Sorento 

like_table  

id, cars_id, ip 
1, 1, 1.0.1 
2, 1, 1.0.1 


select b.name, c.name, count(ip)
from  like_table l 
inner join  cars c on l.cars_id = c.id 
inner join  Brand b on b.id = c.id_brand
group by b.name, c.name 

таким образом легко получить то же самое для автомобиля, но также как для марки и других

select b.name count(ip)
from  like_table l 
inner join  cars c on l.cars_id = c.id 
inner join  Brand b on b.id = c.id_brand
group by b.name
0 голосов
/ 26 августа 2018

если вы просто хотите считать автомобили модели ip

тогда нет необходимости объединять две таблицы, ниже запрос будет подсчитывать модель ip

select Cars,  count(ip) from Like_table    
group by Cars
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...