我已经尝试过寻找答案,但遗憾的是找不到答案。我对SQL很新。也许有人可以提供帮助?
我想加入3张桌子,查看图书标题列表以及他们所在类别的名称:
我设法使用join:
执行此操作select backend.t1.title, backend.t3.category_name
FROM backend.t1
join backend.t2 on bms.t1.book_id = backend.t2.category_id
join backend.t3 on backend.t2.category_id = backend.t3.category_id;
但是,结果中有重复的书名。如何删除重复的书名?类别名称可以重复,因为通常几个标题属于同一类别。我尝试的每个解决方案都清除了重复标题和类别名称的表格,因此它是一个非常短的列表!
谢谢!希望这是有道理的。
答案 0 :(得分:0)
SELECT backend.t1.title, backend.t3.category_name
FROM backend.t1
JOIN backend.t2 ON bms.t1.book_id = backend.t2.book_id
JOIN backend.t3 ON backend.t2.category_id = backend.t3.category_id;
当您希望找到与每本书相关的类别时,您应该通过book_id加入从表2到表1的联接。
需要考虑的一些事项:包含从您的图书ID到类别ID的“链接”的表2很可能是多对一表格,因为每个book_id可以有多个类别。如果是这种情况,那么通过加入此表,您可以多次看到相同的书名,因为该书有多个类别。返回的数据将表示表1中的每本书以及它在表2中“链接”的所有类别。表3绝对是一对一表,因为在每个category_id中是唯一的并且只是查找到该类别的名称。
如果有意义,请告诉我。