2017-04-07 29 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中導出結果,因爲每個表概覽都有一個導出按鈕,包括查詢結果。