我有更多表,我想将它们合并在一起以生成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文件输出的内容是这样的:
产品编号+价格+名称_EN +名称_IT +名称_DE
所以:
ABC123 | 10.00 |奶酪| Fromagi |加濑
DEF456 | 15.00 |水 。 |阿夸。 |瓦瑟
有没有办法实现这一目标?
如果您需要更多信息,请告诉我!
谢谢大家。
最好的问候,
Koen de Haan
答案 0 :(得分:1)
您可以将名称表与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代码。
答案 1 :(得分:1)
在我看来,您可以使用存储过程创建临时表,并将重新存储的文件注入文件:
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
:)
任何问题,随时:)