MySQL查询JOIN有2个表和多个条目

时间:2015-06-15 18:22:54

标签: php mysql sql join

我正在尝试执行MySQL JOIN查询以从两个表中获取内容。

这就是表A的样子:

表A

T(n) ∈ Θ(log n/ log log n)

和表B

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

我正在尝试构建我的SQL语句以输出所有书籍数据,例如:

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 JOIN语句后,我就想到了这一点:

ISBN    |    Author    |    Title
-------------------------------------
0338566 |   John Doe   | Book Title 1
9435644 |              | Book Title 2
8525446 |   John Doe   | Book Title 3

查询只返回2列,因为我只引用tableB.value一次,即使我需要同时获取其中的两个值(标题和作者)。

我如何正确构建此查询?

1 个答案:

答案 0 :(得分:2)

也许不是解决此问题的最佳方法,但我会使用别名连接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:这个数据模型看起来很糟糕,我宁愿更新它并将标题和作者存储在两个不同的表中