我尝试进行查询以从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吗?
答案 0 :(得分:2)
您可以使用表连接从不同的表中获取相关信息。应使用外键指定表之间的关系(即idcategory
中的category-author
列可能是引用主键列category.id
的外键。在join子句中,您只需指定要连接的表以及哪个列:
SELECT table1.col1, table2.col2
FROM table1
JOIN table2 ON table1.pkCol = table2.fkCol
这意味着您无法在JOIN子句中指定任何SELECT
或FROM
子句。您希望从连接表中选择的列都在初始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中导出结果,因为每个表概述都有一个导出按钮,包括查询结果。