我在记住数据库查询时遇到了一些麻烦 - 已经有一段时间了:(
假设我有一些表格:
WORDS {ID, WORD}
FILES {ID, URL}
FILES_WORDS {WORDID, FILEID, COUNT}
WORDS和FILES分别具有PK的命名ID和字/路径的字符串。 FILES_WORDS会对多对多关系进行重新分析,并保留每个单词出现在每个文件中的次数。
我知道我可以选择给定文件的信息,如下所示:
SELECT FILES.URL, WORDS.WORD, FILES_WORDS.COUNT FROM WORDS, FILES, FILES_WORDS
WHERE FILES_WORDS.FILEID = FILES.ID AND FILES_WORDS.WORDID = WORDS.ID AND
IFILE.ID = 1;
我确信使用连接和类似的东西有一个更清晰的语法,但我在谷歌搜索或记住它时遇到了麻烦。任何人都可以帮助加快/清理它吗?
答案 0 :(得分:2)
我认为你正在寻找这样的东西:
SELECT F.URL, W.WORD, FW.COUNT
FROM WORDS W
INNER JOIN FILES_WORDS FW
ON FW.WORDID = W.ID
INNER JOIN FILES F
ON FW.FILEID = F.ID
WHERE FW.FILEID = 1;
但它不一定更快。取决于数量,指数等。
我使用别名(表格的一个字母昵称),因为它更容易遵循,我认为你不需要两个连接,但这也取决于你想要做什么。
答案 1 :(得分:1)
SELECT FILES.URL, WORDS.WORD, FILES_WORDS.COUNT
FROM WORDS INNER JOIN FILES_WORDS ON WORDS.ID = FILES_WORDS.WORDID
LEFT JOIN FILES ON FILES_WORDS.FILEID = FILES.ID
标记您要查询的内容
IFILE.ID = 1;
答案 2 :(得分:0)
尝试:
SELECT f.URL, w.WORD, fw.COUNT
FROM words w INNER JOIN files_words fw
ON f.id = fw.fileid
INNER JOIN words w
ON fw.wordid = w.id
WHERE f.id = 1
答案 3 :(得分:0)
这是查询 -
SELECT FILES.URL, WORDS.WORD, FILES_WORDS.COUNT
FROM WORDS W
Join FILES_WORDS WF
on W.ID = WF.WORDID
Join FILES F
on F.ID = FW.FILEID
Where F.ID = 1;