Я пытаюсь сделать перекресток на только один колонке (map_id), но и вернуть еще один столбец (атр):Intersect только на одной колонке, возвращение других
SELECT map_id, attr
FROM Attr
WHERE attr_id = 0 AND val = '123'
INTERSECT
SELECT map_id, attr
FROM Attr
WHERE attr_id = 20 AND val = '456'
Однако, если пара map_id и атр не совпадают, пересечение не работает (очевидно). Как сделать пересечение на map_id, но вернуть список attrs? Он в конечном итоге становится частью предложения col In() более крупного запроса.
Например:
---------------------------------
Attr_Id Attr Val Map_Id
---------------------------------
0 '1' '123' 1
0 '2' '123' 2
10 '3' '123' 1
10 '4' '123' 2
20 '5' '456' 1
20 '6' '456' 2
30 '7' '456' 1
30 '8' '456' 2
Я хочу его вернуть
----------------
Attr_Id Attr
----------------
0 '1'
20 '5'
@GordonLinoff обновлял его для ясности – Kristin
@Kristin в исходном запросе вы использовали две таблицы, это один использует только одну таблицу. Правильно это или было первым? –
@BrianDeMilia Я использую 2, но проблема может быть объяснена более четко в одном. основная проблема заключается в том, что некоторые из атрибутов attr_id одинаковы, поэтому, если у нас есть список только attr_ids, когда мы переходим к выполнению большего запроса на него, он будет тянуть несвязанные строки. – Kristin