2015-04-27 28 views
-1

我有一個問題:(SQL函數(加入)的REST API PHP,probleme

我有三個表:

  1. 表書

    • ID
    • 標題
    • id_author
  2. 表筆者

    • ID
    • ID_TYPE
  3. 表型

    • ID
    • nameOfType

我想在參數「id_author」和可選參數「id_type」中獲得我的書籍。 例如,如果我過濾所有類型的書籍。

我嘗試:

public function get_books($id_author, $id_type = null) 
{ 
    if ($id_author == 0 && $id_type){ 
     $books= \DB::query("SELECT DISTINCT id, title FROM book LEFT JOIN book ON author.id LEFT JOIN author ON type.id")->execute(); 
    } elseif ($id_author) { 
     $books= \DB::query("SELECT distinct id, title FROM book WHERE id_author=" .$id_author." ORDRE BY id") -> execute(); 
    } 
} 

但沒有奏效....

任何人都可以幫我嗎? :)

+1

沒有工作意味着什麼? –

+0

你必須指定兩個連接列。例如。 「ON author.id = book.author_id」 – jarlh

回答

0

你需要說你想從你的詢問ID其表,它是在所有三個 你還需要使用正確的聯接語法 ,你可能希望有一些WHERE子句

SELECT DISTINCT id, title FROM book LEFT JOIN book ON author.id LEFT JOIN author 
ON type.id 

可能會變成

SELECT DISTINCT book.id, title 
FROM 
book 
JOIN 
    author ON book.author_id = author.id 
JOIN 
    type on book.type_id = type.id 
WHERE 
    nameOfType = 'Detective' 
+1

沒有JOIN條件是主要問題... – jarlh

+0

使用WHERE子句的nameOfType條件的LEFT JOIN作爲常規INNER JOIN執行。如果您想要一個真正的LEFT JOIN,請將該條件移至ON子句。 – jarlh

+0

好點 - 已編輯 –

0

是的,但沒有奏效。

我想的是:

網址: API /電子書/ 10

- >返回所有的書作家誰拿到了10號 其實這工作的。

而且第二次: 網址: API /電子書/如果沒有ID存在 - >然後用第二個參數(可選參數) - >返回所有的書的類型。 (通過使用類型的id)。

+0

好! ('books') - > join('authors') - > on('authors.id','=','books.author_id') - > where('authors.type_id','=',$ type_id) - > execute(); – Askpte