motto13
@motto13
Вечно молодой

Какой запрос для выборки данных с двух таблиц в этом примере?

php 8, mysql 10
Есть две таблицы, категории и перевод названий категорий
categories:
id,
slug

category_translations:
id,
locale,
title,
category_id,

При запросе
$query = "SELECT * FROM categories";
  $query .= " LEFT JOIN category_translations ON category_translations.category_id=categories.id";
  $query .= " GROUP BY categories.id";
  $database->prepare($query);
  $database->execute();

Получаю
array:3 [▼
  0 => {#5 ▼
    "id" => 5
    "slug" => "tst-tstdf"
    "locale" => "de"
    "title" => "Test de"
    "category_id" => 3
  }
  1 => {#5 ▶}
  2 => {#5 ▶}

Как получить все категории и по каждой категории все ее переводы (ru, en, de) ?
например
array:3 [▼
  0 => {#5 ▼
    "category_id" => 3
    "slug" => "tst-tstdf"
    "en" => "Test en"
    "ru" => "Test ru"
    "de" => "Test de"
  }
  1 => {#5 ▶}
  2 => {#5 ▶}
  • Вопрос задан
  • 77 просмотров
Решения вопроса 1
@Akina
Сетевой и системный админ, SQL-программист.
SELECT categories.id, 
       categories.slug,  
       ct_ru.title title_ru,  
       ct_en.title title_en,  
       ct_de.title title_de
FROM categories
LEFT JOIN category_translations ct_ru ON category_translations.category_id=categories.id 
                                     AND category_translations.locale = 'ru'
LEFT JOIN category_translations ct_en ON category_translations.category_id=categories.id 
                                     AND category_translations.locale = 'en'
LEFT JOIN category_translations ct_de ON category_translations.category_id=categories.id 
                                     AND category_translations.locale = 'de';
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы