我有如下表SQL与多个表的搜索查询加入
文件
- 文档ID(PK)
- 网址
WDATA
- 的wordID(PK)
- 字
wtitle
- 的wordID
- 的docID
(的wordID &文档ID组合是唯一的)
wurl
- 的wordID
- 文档ID
(wordID的&文档ID组合是唯一的)
搜索我打破它到任何文字短语,并得到其wordid
。表格wtitle
,wurl
将被用于排名评分。我打算添加更多的表格,如inlink,inh1标签等。但是,我有问题框架我的sql查询搜索词。
我的SQL查询像
SELECT d.docid,furl,IF(t.wordid IS NULL,0,1) AS intitle,IF(u.wordid IS NULL,0,1) AS inurl FROM document d
LEFT JOIN wtitle t ON t.docid=d.docid
LEFT JOIN wdata w ON w.wordid=t.wordid
LEFT JOIN wurl u ON u.wordid=w.wordid AND u.docid=d.docid
WHERE w.wordid IN (wordid1,wordid2,wordid3)
我有以下怀疑
- 如何检查每个表
wtitle
和wurl
两个甚至更多作为目前它在因为左wtitle搜索第一个JOIN和其他连接被忽略? 如何正确构建此SQL查询?
的wordID 3是URL,但不是在DOCID的标题2
的wordID 3是不是在URL,但在DOCID 3的标题
我要回然而,doc 2和3都是因为它首先通过wtitle加入它忽略了(使用第一个查询数据)其他连接
什么可以帮助您创建一些简短的测试数据并为自己进行验证。看看你是否可以得到值来匹配。 –
请注意,'LEFT JOIN w ... WHERE w = ...'与'INNER JOIN w'相同' – Strawberry
如需进一步帮助,请参阅:[为什么我应该为我看来的MCVE一个非常简单的SQL查询?](https://meta.stackoverflow.com/questions/333952/why-should-i-provide-an-mcve-for-what-seems-to-me-to-bea-a-非常简单的sql查询) – Strawberry