2017-04-07 90 views
1

我正在尝试进行查询以从2个表中提取元素,这些表通过另一个表链接。从包含多个表的查询中获取CSV

所以我有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 ?? 

我卡在查询的剩余部分。

此外,当我有这个查询,我可以提取一个CSV与phpmyadmin?

回答

2

您可以使用表连接从不同表中获取相关信息。应该使用外键来指定表之间的关系(即category-author的列idcategory可能是指主键列category.id的外键)。在加盟条款时,您只需指定哪些表要加入并在哪一列:

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中导出结果,因为每个表概览都有一个导出按钮,包括查询结果。

相关问题