У меня есть две таблицы.
Устройства
и
DeviceAttribute
- DeviceAttributeId
- Attributeid
- DeviceId
Теперь я пытаюсь написать запрос, в котором я передаю несколько идентификаторов атрибутов, и я хочу найти все устройства, в которых переданы ВСЕ идентификаторы.
Я передаю идентификаторы в виде XML, и затем я могу преобразовать эти данные во временную таблицу, каждый идентификатор которой находится в отдельной строке.
Итак, предположим, что все атрибуты, которые я хочу сопоставить, находятся в таблице -
CREATE TABLE #TempAttribute (AttributeId int)
Итак, я могу найти все устройства, которые имеют атрибуты 3,34 и 67
У меня есть запрос, который объединяет все идентификаторы атрибутов устройств в один столбец, но я не уверен, что это происходит в правильном направлении:
SELECT deviceID
, [Name]
, (SELECT CAST(cast(attributeID as varchar(10)) + ', ' AS VARCHAR(MAX))
FROM deviceattribute
WHERE (deviceID = device.deviceID)
order by attributeID
FOR XML PATH ('')
) AS attribs
FROM device