从查询中获取涉及多个表的CSV

时间:2017-04-07 11:58:33

标签: php mysql csv

我尝试进行查询以从2个表中提取元素,这些表通过另一个表链接。

所以我有3张桌子:

authors
 - id, name, book
category
 - id, name, description
category-author
 - id, idauthor, idcategory

现在我想进行查询以进行以下输出:

row: authors.id, authors.name, authors.book, category.name

我不知道哪些类别只使用2个表链接,所以我需要使用最后一个类别 - 作者表。作者和类别的ID都通过该表链接。

我收到了以下问题:

SELECT authors.id, authors.name, authors.book, category.name FROM category, author LEFT JOIN SELECT ??

我坚持查询的剩余部分。

此外,当我有此查询时,我可以使用phpmyadmin提取CSV吗?

1 个答案:

答案 0 :(得分:2)

您可以使用表连接从不同的表中获取相关信息。应使用外键指定表之间的关系(即idcategory中的category-author列可能是引用主键列category.id的外键。在join子句中,您只需指定要连接的表以及哪个列:

SELECT table1.col1, table2.col2 FROM table1 JOIN table2 ON table1.pkCol = table2.fkCol

这意味着您无法在JOIN子句中指定任何SELECTFROM子句。您希望从连接表中选择的列都在初始SELECT语句中指定,并且您只在FROM子句中指定一个表,随后从中执行表连接。 在你的情况下,我认为这应该让你开始:

SELECT authors.id, authors.name, authors.book, category.name 
FROM category 
LEFT JOIN category-author ON category-author.idcategory = category.id
LEFT JOIN authors ON authors.id = category-author.idauthor

我不确定你对外键,主键和表连接有多熟悉,所以我不再详细说明了。我认为在FROM子句中指定多个表是不好的做法,即使您的数据库系统仍然支持它(Related question)。

从那时起,您可以轻松地从PhpMyAdmin中导出结果,因为每个表概述都有一个导出按钮,包括查询结果。