我在Access數據庫中有三個表。在搜索查詢中有多個Ins位置?
Labs (ID, TestLab)
Standards (ID, Standard, Keywords)
LabStd (ID, LabID, StdID)
實驗室有很多標準。在今天之前,我需要做的是將搜索短語與Standards
表中的關鍵字或標準列進行匹配。
Select Labs.ID, Labs.TestLab, Standards.standard
FROM Standards INNER JOIN (Labs INNER JOIN LabStd
ON Labs.ID = LabStd.LabID)
ON Standards.ID = LabStd.StdID
WHERE Standards.Keywords LIKE "%labstandard%"
OR Standards.standard LIKE "%labstandard%"
ORDER BY Labs.id, Standards.ID
現在,如果一個加號在搜索中使用(labstandard1 + labstandard2)我需要拆分字符串,看看是否在實驗室中搜索所有的標準相匹配。我想我需要使用一個子查詢爲此嘗試使用多個WHERE IN
陳述,但不起作用,所以我很茫然。
作爲一個測試,我刪除了LIKE
聲明,並剛剛等於。以下查詢不會返回任何結果,即使每個標準和與兩個標準相關聯的實驗室都有匹配的標準。
SELECT Labs.ID, Labs.TestLab, Standards.standard
FROM Standards INNER JOIN (Labs INNER JOIN LabStd
ON Labs.ID = LabStd.LabID)
ON Standards.ID = LabStd.StdID
WHERE LabStd.StdID IN
(SELECT ID AS StdID FROM Standards
WHERE (Standards.Keywords = 'labstandard1'
OR Standards.standard ='labstandard1')
)
AND LabStd.StdID IN
(SELECT ID as StdID
FROM Standards
WHERE (Standards.Keywords = 'labstandard2'
OR Standards.standard ='labstandard2')
)
ORDER BY Labs.id, Standards.ID
我希望我解釋清楚,讓我知道如果我需要澄清任何事情。
訪問SQL使用'*'作爲通配符,不''%的數量。 – 2012-02-21 22:22:50
這個問題的原始版本有asp-classic標籤。在這種情況下,他很可能使用ADO連接到Access數據庫文件...因此他必須**使用ANSI通配符(%和_而不是\ *和?)。 – HansUp 2012-02-21 23:20:01
這是正確的漢斯,單一的查詢工作正常,它得到了第二個扔掉我。我會盡快給Tony的解決方案一個試試,如果我沒有收到我要發佈的一些數據。謝謝你! – 2012-02-22 15:32:47