Можно ли сгенерировать запрос MYSQL для нескольких таблиц со значениями одного столбца таблицы в виде большего количества столбцов запроса? - PullRequest
0 голосов
/ 23 ноября 2018

У меня есть больше таблиц, которые я хочу объединить для создания файла CSV, который может прочитать наша бэк-офисная система.У меня есть 1 таблица с информацией о продукте и другая таблица с информацией о языке.Базы данных создаются в следующем примере:

База данных продукта:

<table>
    <tr>
        <td>id</td><td>productnumber</td><td>price</td><td>name_id</td>
    </tr>
    <tr>
        <td>1</td><td>ABC123</td><td>10.00</td><td>1</td>
    </tr>
    <tr>
        <td>2</td><td>DEF456</td><td>15.00</td><td>2</td>
    </tr>
</table>

Имя базы данных:

<table>
    <tr>
        <td>id</td><td>name_id</td><td>name</td><td>language_id</td>
    </tr>
    <tr>
        <td>1</td><td>1</td><td>Cheese</td><td>1</td>
    </tr>
    <tr>
        <td>2</td><td>1</td><td>Fromagi</td><td>2</td>
    </tr>
    <tr>
        <td>3</td><td>1</td><td>Kase</td><td>3</td>
    </tr>
    <tr>
        <td>4</td><td>2</td><td>Water</td><td>1</td>
    </tr>
    <tr>
        <td>5</td><td>2</td><td>Acqua</td><td>2</td>
    </tr>
    <tr>
        <td>6</td><td>2</td><td>Wasser</td><td>3</td>
    </tr>
</table>

Языковая база данных:

<table>
    <tr>
        <td>id</td><td>Language</td>
    </tr>
    <tr>
        <td>1</td><td>English</td>
    </tr>
    <tr>
        <td>2</td><td>Italian</td>
    </tr>
    <tr>
        <td>3</td><td>German</td>
    </tr>
</table>

То, что я хочу получить в качестве вывода для файла CSV, выглядит следующим образом:
Productnumber + Price + Name_EN + Name_IT + Name_DE

Итак:
ABC123 |10.00 |Сыр |Фромаги |Kase
DEF456 |15.00 |Вода .|Acqua.,|Wasser

Есть ли способ, как этого добиться?

Если вам нужна дополнительная информация, просто дайте мне знать!Спасибо всем заранее.
С наилучшими пожеланиями,

Коэн де Хаан

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

на мой взгляд, вы можете создать временную таблицу, используя хранимую процедуру, и добавить результат в файл:

DELIMITER //
CREATE PROCEDURE getyourstuff()
BEGIN

    DROP TEMPORARY TABLE IF EXISTS tmp_stuff;
    CREATE TEMPORARY TABLE tmp_stuff 
    SELECT your,sweet,request  from your database;

    -- write the into file ....
    SELECT * 
      INTO OUTFILE '/path/to/mystufffile.txt'
        FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
        LINES TERMINATED BY '\n'
      FROM tmp_stuff;

    -- if you wanna display the resault , if not remove the line below 
    SELECT * FROM tmp_stuff; 
END//
DELIMITER ;

, и вы можете окончательно вызвать getyourstuff после этого:)

любой вопрос, не стесняйтесь:)

0 голосов
/ 23 ноября 2018

Вы можете объединить таблицу имен несколько раз с таблицей Product.

select p.id, p.productnumber, p.price, en.name, it.name, de.name
from Product p
  join Name en on en.name_id=p.name_id and en.language_id=1
  join Name it on it.name_id=p.name_id and it.language_id=2
  join Name de on de.name_id=p.name_id and de.language_id=3

В будущем лучше показать сценарий создания реальной таблицы, а не какой-нибудь HTML-код.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...