我正在寻找一种将查询框架到数据库的方法。这是场景。
我有3个tables
:tags
,sentenceTags
和sentences
。 tags
的字段为id
和name
,这是标记的名称。 sentenceTags
有sentenceId
,tagId
作为外键,其他字段如createdAt
(对我的问题不是很重要)。
现在,我通过API获取搜索请求,以返回标记为books
的句子。所以我必须在tags
表中搜索名称字段等于books
的条目并返回id
。使用此id
我需要按顺序查询sentenceTags
表,然后查询sentences
表。
我想过使用多个select
语句,因为我无法想到如何{3}} 3个表。或许join
。我的问题是:进行此类查询的更好方法是什么?我只是需要一些线索或一些如何做到这一点的提示。
答案 0 :(得分:1)
只需使用加入2次,您的查询将如下所示:
select * from tags t join sentenceTags st on t.id=st.tagId join sentences s on st.sentenceId=s.id where t.name='books';
答案 1 :(得分:1)
这是加入它们的最简单方法:
Private Sub CopyPasteRange()
Dim Rng As Range
Dim Arr As Variant
With Range("Candidatures")
Set Rng = .Range(.Cells(0, 1), .Cells(.Rows.Count - 1, 6))
End With
Debug.Print Rng.Address, Rng.Rows.Count, Rng.Columns.Count
Arr = Rng.Value
Debug.Print Lbound(Arr,1), Lbound(Arr, 2), Ubound(Arr,1), Ubound(Arr,2)
Debug.Print Worksheets("RawData").Cells(2, 1).Resize(UBound(Arr, 1), UBound(Arr, 2)).Address
Worksheets("RawData").Cells(2, 1).Resize(UBound(Arr, 1), UBound(Arr, 2)).Value = Arr
End Sub
答案 2 :(得分:1)
实际上sentenceTag
表是连接tags
和sentence
的中间表。您sentenceId
来自sentence
,tagsId
来自tag
表格。
您只需要从所有表格中选择使用JOIN:
SELECT *
FROM
tags
JOIN
sentenceTags
ON
tags.id = sentenceTags.tagID
JOIN
sentence
ON
sentence.id = sentenceTags.sentenceId
WHERE
tags.name = 'Books'