Answer the question
In order to leave comments, you need to log in
How to generate a search query for size +/- 1?
There is a table of goods with a bunch of fields of characteristics. The task is to find the corresponding products in this table according to several parameters. For example, you need the products to be of the same shape, the same color, but the second product is +/- 1 position larger or smaller. Now it is implemented like this, but if the request is not very specific, then it searches for a very long time. SQL I study rather recently, that that can not catch up.
SELECT a.[артикул], b.[артикул],
FROM Товары AS a INNER JOIN Товары AS b
ON (a.[артикул]<>b.[артикул] AND a.[форма]=b.[форма] AND a.[цвет]=b.[цвет] AND a.[размер]>b.[размер])
WHERE b.[размер]=(SELECT MAX(c.[размер]) FROM Товары AS c WHERE {те же самые условия})
Answer the question
In order to leave comments, you need to log in
I write in MS SQL, there may be nuances in MS Access, but I would decide this way
1) In a temporary table or CTE I made a selection according to the search condition, only the size condition would be + - 1 specified in the search
SELECT *
INTO #tmp_search
FROM Товары
WHERE {условия поиска кроме рамера}
AND [размер] BETWEEN [ИскомыйРазмер] - 1 AND [ИскомыйРазмер] + 1
SELECT
FROM #tmp_search AS t1
INNER JOIN #tmp_search AS t2
WHERE t1.[артикул]<>t2.[артикул]
AND t2.[размер] BETWEEN t1.[размер] - 1 AND t1.[размер] + 1
AND t1.[размер] = {условие по искомому размеру}
SELECT a.[артикул], b.[артикул]
FROM Товары AS a
INNER JOIN Товары AS b
ON (a.[артикул]<>b.[артикул] AND a.[форма]=b.[форма] AND a.[цвет]=b.[цвет])
AND b.[размер] BETWEEN a.[размер]-1 AND a.[размер]+1
WHERE {условия поиска по a})
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question