2014-01-07 4 views
1

Я хочу проверить, является ли запись в столбце действительной, запустив ее и проверив ее другие записи в другой таблице. Например, пользователь вводит "AB" в столбце T1.C1. Затем я хочу проверить, "AB" есть в колонке T2.C2. Любые идеи?Проверьте, существует ли ключ в другой таблице

+0

Do строк в двух таблицах должны совпадать любым другим способом (например, с идентификатором пользователя) или просто «существует ли это значение где-то»? –

+2

Вызывается [«внешний ключ»] (http://en.wikipedia.org/wiki/Foreign_key), и ваша СУБД может справиться с ней самостоятельно, просто * объявите ее. –

ответ

1

Если вы хотите просто LookUp значения, сделать SELECT с WHERE пунктом:

select * from T2 where T2.C2 = 'AB' 

Чтобы проверить всю таблицу, можно использовать WHERE IN:

select * from T2 
where T2.C2 in 
(
    select C1 from T1 where T1.C1 = T2.C2 
) 

Другим эквивалентным способом выполнение этого же запроса: WHERE EXISTS:

select * from T2 
where exists 
(
    select * from T1 where T1.C1 = T2.C2 
) 

Если вы хотите, чтобы увидеть, какой матч t1s с T2s, сделайте INNER JOIN:

select * from T1 
inner join T2 on T2.C2 = T1.C1 

Если схема базы данных требует, чтобы есть T2.C2, который соответствует T1.C1, то вы должны использовать внешний ключ утверждают это требование. В зависимости от того, какая таблица является родителем и который является ребенок, внешний ключ будет выглядеть следующим образом:

alter table ChidlTable 
add constraint FK_Child_Parent foreign key (C1) 
references ParentTable (C2) 
0

Вы можете использовать EXISTS для проверки существования:

SELECT * FROM Table1 T1 
WHERE T1.C1 = 'AB' 
AND EXISTS 
(
    SELECT 1 FROM Table2 T2 WHERE T2.C2 = T1.C1 
) 
Смежные вопросы