Php MySQL查询连接,包含2个表和多个条目

Php MySQL查询连接,包含2个表和多个条目,php,mysql,sql,join,Php,Mysql,Sql,Join,我正在尝试执行一个MySQL连接查询,以从两个表中获取内容 这是表A的外观: 表A ID | ISBN | Type ---------------------- 12 | 0338566 | book 15 | 6656565 | post 16 | 9435644 | book 20 | 8525446 | book 及表B ID | tableA_id | Key | Value ---------------------------------

我正在尝试执行一个MySQL连接查询,以从两个表中获取内容

这是表A的外观:

表A

ID  |  ISBN   |  Type
----------------------
12  | 0338566 | book
15  | 6656565 | post
16  | 9435644 | book
20  | 8525446 | book
及表B

ID  |  tableA_id  |    Key      |  Value
---------------------------------------------
1   |     12      |    Author   |  John Doe
2   |     12      |    Title    |  Book Title 1
3   |     16      |    Title    |  Book Title 2
4   |     20      |    Author   |  John Doe
5   |     20      |    Title    |  Book Title 3
我正在尝试构建SQL语句以输出所有书籍数据,例如:

ISBN    |    Author    |    Title
-------------------------------------
0338566 |   John Doe   | Book Title 1
9435644 |              | Book Title 2
8525446 |   John Doe   | Book Title 3
在查找SQL JOIN语句后,我得出以下结论:

SELECT tableA.ISBN, tableB.value
FROM tableA, tableB  
WHERE tableA.ID = tableB.tableA_id AND tableA.type = “book” AND  (tableB.key = "title" OR tableB.author = "store_selector" )
查询只返回了2列,因为我只引用了tableB.value一次,尽管我需要获取其中的两个值(title和author)


如何正确构造此查询?

可能不是解决此问题的最佳方法,但我会使用别名连接tableB两次,并根据需要选择值,如下所示:

SELECT tableA.ISBN, author.value as Author, title.Value as Title
FROM tableA
left join tableB author 
    on tableA.ID = author.tableA_id  
    and author.key = "Author"
left join tableB title 
    on tableA.ID = title.tableA_id 
    and title.key = "Title"
where tableA.type = “book”

PS:这个数据模型看起来很糟糕,我宁愿更新它,并将标题和作者存储在两个不同的表中

我建议您正确地构造数据库,而不是查询。将
Author
Title
列添加到
tableB
@umka这实际上是Wordpress在wp_posts表和wp_postmeta表中存储帖子数据的方式。这实际上是Wordpress在wp_posts表和wp_postmeta表中存储帖子数据的方式。不幸的是,这不是我的dat模型。选择此选项可能有一个原因:)请告诉我该查询是否适合您。PhpMyAdmin给了我以下错误:#1054-未知列“字段列表”中的“author.value”。没有名为author的表。。。这就是原因吗?在本例中,
author
是别名,而不是表。在您的模型中,
Value
用大写字母
V
表示,并且您的错误消息表明您编写了小写字母
V
,可能这就是导致此错误的原因。大写字母V也有相同的问题。因此,上面的语句是我的Wordpress表的压缩版本。。。我可以向您展示我使用的真正查询。。它是: