Veneomin
@Veneomin

Как правильно написать mysql запрос?

У меня есть таблица, я делаю к ней запрос и получаю результат вида:
{
    id:1,
    name:'vasya',
    age:20
},
{
    id:2,
    name:'petya',
    age:22
},
{
    id:3,
    name:'zina',
    age:18
}

У меня есть вторая таблица, в которой указано хобби в формате userid - hobby. Мне нужно получить результат вот такой:
{
    id:1,
    name:'vasya',
    age:20,
    hobby: 'none'
},
{
    id:2,
    name:'petya',
    age:22б
    hobby:'box'
},
{
    id:3,
    name:'zina',
    age:18,
    hobby:'tennis'
}


Как мне связать результаты из двух таблиц?
  • Вопрос задан
  • 137 просмотров
Решения вопроса 1
HeadOnFire
@HeadOnFire
PHP, Laravel & WordPress Evangelist
SELECT u.id, u.name, u.age, h.hobby
FROM users u
LEFT JOIN hobbies h
ON u.id = h.user_id;


Пояснение "человеческим языком":

- выбрать id, name, age из таблицы u (алиас users), а также hobby из таблицы h (алиас hobbies)
- из таблицы users (к которой будем обращаться по алиасу u)
- и объединить с результатами из таблицы hobbies (к которой будем обращаться по алиасу h)
- а само объединение делаем по правилу где id из таблицы u (users) равно user_id из таблицы h (hobbies)

LEFT JOIN берет за основу таблицу слева (отсюда LEFT), то есть ту, которая первая - стоит в самом SELECT FROM. Далее он дозаполняет новую временную таблицу колонками и значениями, получаемые из второй таблицы (указана в LEFT JOIN).

На выходе получается:

59f1b8c599dd9173459361.jpeg
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FitTech
@FitTech
Ипользуйте Left Join
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы