我想使用来自三个不同表格的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";
答案 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以清楚地说明如何在两个正在加入的表中包含/排除数据。