2017-01-02 7 views
1

booksauthorsというテーブルが必要です。MySQL:別のテーブルの空き状況に応じてSELECTする方法

これは私のbooksテーブルです:

books table

それは本のタイトル、著者名や書籍の記述が含まれています。

これは私のauthorsテーブルです:

authors table

それは、著者名、著者が住んでいる都市と著者の肖像画(記述)が含まれています。

私の質問は次のとおりです。SELECT *行はbooksからどのように行えますか? authorsテーブルの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:city」が始まり*「go south」*になります。 PDOは事前に何をすべきか分からないので、そのようにバインドすることはできません。 http://php.net/manual/en/pdo.error-handling.phpはあなたにそれについて何かを投げたでしょう。 –

+0

ヒント: 'JOIN'条件は、都市以外の作者にあります。 –

+0

どうすればいいですか? – user7128548

答えて

2

あなたは次のクエリの結果たい:次のように見えるPHP/PDOと

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

を:

$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。この結合の後、2つのテーブルをすべての列を持つ1つの大きなテーブルとして想像することができます。クエリのWHERE部分でフィルタを定義し、投稿者:city(あなたの例ではベルリン)からすべてbooksを取得します。

+0

ありがとう、それは私の問題を解決! – user7128548

関連する問題