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

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

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

  1. <table>
  2. <tr>
  3. <td>id</td><td>productnumber</td><td>price</td><td>name_id</td>
  4. </tr>
  5. <tr>
  6. <td>1</td><td>ABC123</td><td>10.00</td><td>1</td>
  7. </tr>
  8. <tr>
  9. <td>2</td><td>DEF456</td><td>15.00</td><td>2</td>
  10. </tr>
  11. </table>

名称数据库:

  1. <table>
  2. <tr>
  3. <td>id</td><td>name_id</td><td>name</td><td>language_id</td>
  4. </tr>
  5. <tr>
  6. <td>1</td><td>1</td><td>Cheese</td><td>1</td>
  7. </tr>
  8. <tr>
  9. <td>2</td><td>1</td><td>Fromagi</td><td>2</td>
  10. </tr>
  11. <tr>
  12. <td>3</td><td>1</td><td>Kase</td><td>3</td>
  13. </tr>
  14. <tr>
  15. <td>4</td><td>2</td><td>Water</td><td>1</td>
  16. </tr>
  17. <tr>
  18. <td>5</td><td>2</td><td>Acqua</td><td>2</td>
  19. </tr>
  20. <tr>
  21. <td>6</td><td>2</td><td>Wasser</td><td>3</td>
  22. </tr>
  23. </table>

语言数据库:

  1. <table>
  2. <tr>
  3. <td>id</td><td>Language</td>
  4. </tr>
  5. <tr>
  6. <td>1</td><td>English</td>
  7. </tr>
  8. <tr>
  9. <td>2</td><td>Italian</td>
  10. </tr>
  11. <tr>
  12. <td>3</td><td>German</td>
  13. </tr>
  14. </table>

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

nkoocmlb

nkoocmlb1#

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

  1. DELIMITER //
  2. CREATE PROCEDURE getyourstuff()
  3. BEGIN
  4. DROP TEMPORARY TABLE IF EXISTS tmp_stuff;
  5. CREATE TEMPORARY TABLE tmp_stuff
  6. SELECT your,sweet,request from your database;
  7. -- write the into file ....
  8. SELECT *
  9. INTO OUTFILE '/path/to/mystufffile.txt'
  10. FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
  11. LINES TERMINATED BY '\n'
  12. FROM tmp_stuff;
  13. -- if you wanna display the resault , if not remove the line below
  14. SELECT * FROM tmp_stuff;
  15. END//
  16. DELIMITER ;

最后你可以打电话给 getyourstuff 之后:)
任何问题,请随时回答:)

展开查看全部
piztneat

piztneat2#

可以多次将name表与product表联接。

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

对于将来,最好显示实际的表创建脚本,而不是一些html代码。

相关问题