SQL-запрос из 2-х таблиц - PullRequest
       5

SQL-запрос из 2-х таблиц

0 голосов
/ 06 августа 2010

В настоящее время у меня есть две таблицы, которые выглядят примерно так:

Таблица 1

Id | AddressNumber | AddressStreet | AddressZip
------------------------------------------------
1   | 50           | Fake          | 60101
2   | 300          | Fake          | 60101
3   | 50           | Fake2         | 60101
4   | 50           | Fake          | 60103

Таблица 2

AddressLowRange | AddressHighRange | AddressStreet | AddressZip
---------------------------------------------------------------
50             | 200              | Fake          | 60101
20             | 50               | Other Fake    | 70102

Мне нужно найти список идентификаторов из таблицы 1, где адрес не указан в таблице 2. Поэтому для приведенных выше примеров я получу идентификаторы 2, 3 и 4.

Ответы [ 4 ]

9 голосов
/ 06 августа 2010

Попробуйте это.

SELECT Id
FROM Table1
WHERE NOT EXISTS
    (SELECT *
    FROM Table2
    WHERE Table1.AddressNumber BETWEEN Table2.AddressLowRange AND Table2.AddressHighRange
        AND Table1.AddressStreet = Table2.AddressStreet
        AND Table1.AddressZip = Table2.AddressZip
    )
;
1 голос
/ 06 августа 2010

Я предполагаю, что вы хотите рассмотреть диапазон номеров, в отличие от большинства других ответов.Нечто подобное должно работать:

select Id
  from Table1
 where Id not in (select T1.Id
                    from Table1 T1
                    join Table2 T2 on (T1.AddressNumber between T2.AddressLowRange and T2.AddressHighRange)
                                   and T1.AddressStreet = T2.AddressStreet
                                   and T1.AddressZip = T2.AddressZip)

или немного упрощенно ...

select T1.Id
  from #table1 T1
  left join #table2 T2 on (T1.AddressNumber between T2.AddressLowRange and T2.AddressHighRange)
                      and T1.AddressStreet = T2.AddressStreet
                      and T1.AddressZip = T2.AddressZip
 where T2.AddressLowRange is null
1 голос
/ 06 августа 2010
select id from "Table 1"
where AddressStreet not in (select distinct AddressStreet from "Table 2")
1 голос
/ 06 августа 2010

означает, что адрес не указан в таблице 2 означает addressStreet

если так:

select id from table1 where addressStreet not in (select distinct addressstreet from table2)

и

select * from table1 where addressStreet not in (select distinct addressstreet from table2)

для всех полей

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...