如何从一个csv文件中的多个表导出数据而不在php中加入

时间:2014-08-04 12:00:24

标签: php mysql csv export

我想使用来自三个不同表格的php在一个csv文件中导出数据。

如果我加入表,它只导出那些包含子数据的父数据,但我想导出所有父子数据,并且我希望所有数据都在一个文件中。

我不想使用联接

这是解决方案吗?

这是我的查询

$query = "SELECT plist.*, psong.*, prate.* 
          FROM " . $pre . "foo_playlists As plist 
          Inner Join " . $pre . "foo_songs As psong 
          On plist.playlist_name = psong.playlist_name 
          Inner Join " . $pre . "foo_rating As prate 
          On psong.song_id = prate.song_id";

2 个答案:

答案 0 :(得分:2)

我有一个问题。当我执行此查询时,只有table_1显示结果(10行)。但是在使用php(20行)在csv上导出时,table_1和table_2显示

SELECT table_1.*, table_2.* 
FROM mytable_1 AS table_1 
LEFT  JOIN  mytable_2  AS table_2
    ON table_1.id = table_2.id
        AND table_1.name = table_2.name limit 10

答案 1 :(得分:1)

我无法想象你为什么不想使用"加入,这有点像问如何开钉,但你不想用锤子。尽管如此,如果您想要3个表,并且不想使用正确的工具来完成工作,您需要单独阅读每个表,将输出写入单个文件,

OR(更有效,更正确),

将示例SQL更改为LEFT JOIN而不是INNER JOIN - 在您的情况下,它将包含来自foo_playlists 的所有行,以及来自foo_songs的匹配行,或null,如果没有匹配,和foo_rating中的相同。

SELECT plist.*, psong.*, prate.* 
FROM " . $pre . "foo_playlists As plist 
LEFT JOIN " . $pre . "foo_songs As psong On plist.playlist_name = psong.playlist_name 
LEFT JOIN " . $pre . "foo_rating As prate On psong.song_id = prate.song_id

请参阅此Visual Representation of SQL Joins以清楚地说明如何在两个正在加入的表中包含/排除数据。