sql—是否可以将一个表列的值作为多个查询列生成多个表的mysql查询?

8xiog9wr  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(248)

我有更多的表,我想结合起来,生成一个csv文件,我们的后台系统可以读取。我有一个表与产品信息和语言信息的其他表。数据库的构建如下所示:
产品数据库:

<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文件的输出如下:
产品编号+价格+名称\u en+名称\u it+名称\u de
所以:
123 | 10.00 |奶酪|来自AGI | kase
def456 | 15.00 |水。| akka 瓦瑟
有没有办法做到这一点?
如果你需要更多的信息,请告诉我!提前谢谢大家。
致以最诚挚的问候,
科恩德哈恩

w41d8nur

w41d8nur1#

可以多次将name表与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代码。

ktecyv1j

ktecyv1j2#

在我看来,您可以使用存储过程创建临时表,并将结果注入到文件中:

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 之后:)
任何问题,请随时回答:)

相关问题