我的数据库设计糟糕,需要正确连接两个表。 我需要查询Table1中的所有字段并替换books_ordered 表2中的第一个标题具有相同的ID。 每本书id的第一个标题是德语,我只需要德语标题。
编辑:我更新了表格以使其更具体
这是一个示例表。
表1
|___id___|__name__|_books_ordered_|
| 1 | peter | 24,25,26 |
| 2 | olaf | 25,26 |
| 3 | walter | 24 |
| 4 | tim | 24,25 |
表2
|___id___|____title____|___book_id___|
| 1 | Das Haus | 24 |
| 4 | The house | 24 |
| 7 | la maison | 24 |
| 10 | la casa | 24 |
| 2 | Der Baum | 25 |
| 5 | The tree | 25 |
| 8 | L'arbre | 25 |
| 11 | El árbol | 25 |
| 3 | Das Boot | 26 |
| 6 | The boat | 26 |
| 9 | Le bateau | 26 |
| 12 | El barco | 26 |
到目前为止我的查询是:
SELECT t.name, tr.title, FROM Table1 AS t
INNER JOIN Table2 AS tr
ON t.books_ordered = tr.book_id
WHERE tr.id<3
但结果只是给了我book_ordered中第一个id的标题。有点像这样:
|___name____|___title_____|
| Peter | Das Haus |
| Peter | Das Haus |
| Peter | Das Haus |
| Olaf | Der Baum |
| Olaf | Der Baum |
| Walter | Das Haus |
| Tim | Das Haus |
| Tim | Das Haus |
我需要的结果应该是这样的:
|___name____|___title__________________________|
| Peter | Das Haus, Der Baum, Das Boot |
| Olaf | Der Baum, Das Boot |
| Walter | Das Haus |
| Tim | Das Haus, Der Baum |
答案 0 :(得分:0)
试试这个
SELECT t.name, GROUP_CONCAT(tr.title SEPARATOR ', '), FROM Table1 AS t
INNER JOIN Table2 AS tr
ON t.books_ordered = tr.book_id
WHERE tr.id<3
GROUP BY t.name
答案 1 :(得分:0)
我用链接的重复问题解决了它。 这个具体问题的答案是:
SELECT distinct t.name, tr.title
FROM Table1 AS t
INNER JOIN Table2 AS tr
ON find_in_set(tr.book_id, t.books_ordered)