За последние 24 часа нас посетили 20782 программиста и 1127 роботов. Сейчас ищут 337 программистов ...

показать таблицу с подстановками из справочников

Тема в разделе "MySQL", создана пользователем ahsas, 27 авг 2018.

  1. ahsas

    ahsas Новичок

    С нами с:
    8 авг 2018
    Сообщения:
    6
    Симпатии:
    0
    Правильно заданный вопрос - половина решения проблемы.
    Я даже сформулировать не могу, что мне нужно. Постараюсь объяснить на примере.
    Есть три таблицы
    table person с полями ID, title
    1 Петров
    2 Иванов
    3 Сидоров

    table product с полями ID,title
    1 молоко
    2 квас

    table usage с полями ID, ID_person, ID_product
    1 1 1
    2 2 2
    3 1 2
    4 1 2
    5 3 1

    нужно, чтобы выборка показала следующее:

    Петров молоко
    Иванов квас
    Петров квас
    Петров квас
    Сидоров молоко
     
  2. Ash214

    Ash214 Новичок

    С нами с:
    2 авг 2018
    Сообщения:
    6
    Симпатии:
    0
    SELECT person.title as title_person, product.title as title_product
    FROM usage as U
    LEFT JOIN person as P1 on P1.ID = U.ID_person
    LEFT JOIN product as P2 on P2.ID = U.ID_product
     
  3. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    @Ash214, left join для person не вернет записи, которые есть в person, но нет в usage.
    А если ТС'у не нужны записи о тех, кто ничего не использует, то left join - лишний. Можно просто, join.
     
  4. ahsas

    ahsas Новичок

    С нами с:
    8 авг 2018
    Сообщения:
    6
    Симпатии:
    0
    позвольте усложнить задачу.
    таблицы person и product находятся в базе spravka
    таблица usage - в базе logs

    очевидно. путаюсь в синтаксисе.
    не получается.
     
  5. Ash214

    Ash214 Новичок

    С нами с:
    2 авг 2018
    Сообщения:
    6
    Симпатии:
    0
    Если не путаю, то при этом надо чтобы базы данных находились в одном инстансе


    SELECT P1.title as title_person, P2.title as title_product
    FROM logs.usage as U
    LEFT JOIN spravka.person as P1 on P1.ID = U.ID_person
    LEFT JOIN spravka.product as P2 on P2.ID = U.ID_product
     
  6. ahsas

    ahsas Новичок

    С нами с:
    8 авг 2018
    Сообщения:
    6
    Симпатии:
    0
    Премного благодарен