我有这个问题,我是SQL的新手。我有3张桌子:
TBL_PRODUCT
:
prod_id,
prod_type,
prod_code,
prod_desc
TBL_DOCUMENT
:
doc_id,
doc_name,
doc_expiry,
doc_term,
enable_amt
TBL_DOCUMENT_GROUP
:
grp_id,
prod_type,
doc_type, doc_id
对于每个文档,都有相应的产品,一对多。我无法弄清楚的是如何显示每个文档的产品。提前谢谢!
我很抱歉,但我真的不知道该怎么做,我所知道的只是SQL的基础知识。
答案 0 :(得分:1)
根据您提供的架构,我假设您可以找到每个文档的所有产品 1.文档所在的document_group 2. document_group与哪个product_type相关联 如果是这种情况,这就是您的查询的样子:
SELECT doc_id, prod_id
FROM tbl_document AS td
JOIN tbl_document_group AS tdg ON td.doc_id = tdg.doc_id
JOIN tbl_product AS tp ON tdg.prod_type = tp.prod_type
WHERE doc_id = 1;
然而,您在上面概述的方案有点不同寻常。
答案 1 :(得分:0)
没有任何东西可以将TBL_PRODUCT中的prod_id绑定到TBL_DOCUMENT中的任何文档。 你能想到的唯一匹配的东西是: 给定一个文档(来自TBL_DOCUMENT)并将其与TBL_DOCUMENT_GROUP连接,您可以告诉它属于哪个产品组。 但是你永远不能将一个文档与一个产品匹配(这就是本设计中缺少的东西)。
这是你能得到的最接近的地方:
select a.doc_id, a.doc_name, c.prod_type --// but not prod_id...that will create a cross join
from TBL_DOCUMENT a
inner join TBL_DOCUMENT_GROUP b
on a.doc_id = b.doc_id
inner join TBL_PRODUCT c
on c.prod_type = b.prod_type
即。 TBL_DOCUMENT表缺少prod_id,或者您需要另一个表来定义doc_id和prod_id之间的关系...