SQL group путем получения другого табличного значения по идентификатору

#mysql #sql

#mysql #sql

Вопрос:

У меня есть 2 таблицы, следующие таблицы:

Пользователи
ID
Имя
Автомобиль
Автомобили
ID
Имя

допустим, у меня есть эти пользователи

идентификатор: 1 , имя: Michael , автомобиль: 1

идентификатор: 2 , имя: Danny , автомобиль: 2

идентификатор: 3 , имя: Jennifer , автомобиль: 1

и эти машины

идентификатор: 1 , имя: Audi ,

идентификатор: 2 , имя BMW

Я пытаюсь узнать, сколько автомобилей каждого типа есть у пользователей, поэтому результат должен быть таким:

Автомобили количество машин
Audi 2
BMW 1

Я выполняю следующую команду

 SELECT u.car, c.name, COUNT('car count') FROM users u INNER JOIN cars c ON c.id = u.car GROUP BY c.id
 

что дает следующий результат

Автомобили Имя количество машин
1 Audi 2
2 BMW 1

Как я могу игнорировать столбец name, но отображать имя внутри столбца cars (как я упоминал выше)?

Комментарии:

1. Просто не выбирайте его, если он вам не нужен.

2. Извините, если я не понял, но машины возвращаются как id , и я хочу отобразить их имя

3. Вы уже выбираете и отображаете название автомобиля, говорите, что хотите показать имя пользователя? Возможно, вам следует включить ожидаемый результат в свой вопрос.

4. @Andrew Я хочу, чтобы в столбце автомобили отображались имена, а не id , так что автомобили будут Audi и количество будет 2 , прямо сейчас он возвращает свои id

Ответ №1:

попробуй это.

 SELECT c.name as cars, COUNT('car count') 
FROM users u 
INNER JOIN cars c ON c.id = u.car 
GROUP BY c.id
 

Комментарии:

1. Именно то, что мне было нужно 🙂

Ответ №2:

Попробуйте это:

 SELECT 
    c.name as 'car', 
    COUNT('car count') 
FROM 
    users u 
INNER JOIN 
    cars c ON c.id = u.car 
GROUP BY 
    c.id
 

Комментарии:

1. Именно то, что мне было нужно 🙂