我必须使用名为books
和authors
的表格。
这是我的books
表:
它包含书名,作者姓名和书的描述。
这是我的authors
表:
它包含作者姓名,作者所在的城市和作者肖像(描述)。
我的问题是:我如何SELECT *
来自books
的作者所在城市的行如Berlin
表中的authors
。
在这种情况下,当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 :(得分:1)
您需要以下查询的结果:
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
部分,您可以定义过滤器,以获取作者来自指定books
的所有:city
(在您的示例中为柏林)。