Php MySQL查询连接,包含2个表和多个条目
我正在尝试执行一个MySQL连接查询,以从两个表中获取内容 这是表A的外观: 表APhp 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 ---------------------------------
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表的压缩版本。。。我可以向您展示我使用的真正查询。。它是: