2017-01-02 70 views
1

我不得不稱爲booksauthorsMySQL:如何根據可用性在另一個表中選擇

這是我books表:

books table

它包含本書中,作者姓名和書中的描述的標題。

這是我authors表:

authors table

它包含了作者的名字,所在的城市生活的作家和作者肖像(介紹)。

我的問題是:我如何SELECT *books行作者城市建立爲例如。 Berlinauthors表中。

在這種情況下,當city = Berlin時,應該選擇title = "Something title AAA"title = "Something title DDD"的行。

這是我已經試過:

$stmt = $pdo->prepare('SELECT title, author, description FROM books JOIN authors ON :city = city'); 

$stmt->execute(array(':city' => "Berlin")); 

但它不工作。我沒有輸出。我究竟做錯了什麼?

+0

對於初學者來說,'ON:城市'就是事情開始的地方*「去南部」*。你不能以這種方式綁定它,因爲PDO不知道提前做什麼。 http://php.net/manual/en/pdo.error-handling.php會引發你一些關於它的事情。 –

+0

提示:JOIN條件在作者身上,不在城市。 –

+0

那麼,我該怎麼辦? – user7128548

回答

2

您希望下面的查詢結果:

SELECT books.* FROM books INNER JOIN authors ON books.author = authors.name 
WHERE authors.city = 'Berlin' 

與PHP/PDO它看起來像如下:

$stmt = $pdo->prepare('SELECT books.* FROM books INNER JOIN authors ON books.author = authors.name WHERE authors.city = :city'); 
$stmt->execute(array(':city' => "Berlin")); 

查詢的ON部分定義您的表books之間的關係和authors。加入後,您可以將兩張桌子想象成一張大桌子,幷包含所有列。在查詢的WHERE部分,您定義篩選器以獲取作者來自指定的:city(在您的柏林示例中)的所有books

+0

謝謝,這解決了我的問題! – user7128548

相關問題