Интервал в таблице не соответствует интервалу в другой таблице - PullRequest
0 голосов
/ 01 октября 2019

Я хотел бы сравнить значения таблицы «от-до» с другими значениями таблицы и посмотреть, совпадают ли они. На самом деле, я хочу, чтобы FROM первой таблицы соответствовал одному из FROM другой таблицы иTO первой таблицы, чтобы соответствовать одному из TO второй таблицы, как в:

     TABLE1                                TABLE2
GEOLFROM GEOLTO                         SAMPFROM SAMPLTO
   28.5    36                             28.5   29.5
                                          29.5   32
                                          32     34.5
                                          34.5   36.1
                                          36.1   38

В этом сценарии я хотел бы получить сообщение об ошибке, так как нет совпадения для geolto таблицы 1.

DECLARE @COUNT_ int
SELECT @COUNT_ = COUNT(*) FROM TABLE1 T1
LEFT JOIN TABLE2 T2 ON T1.HOLEID = T2.HOLEID AND (T1.GEOLFROM = T2.SAMPFROM OR T1.GEOLTO = T2.SAMPTO) 

IF COUNT > 0 
    [...] ERROR

1 Ответ

1 голос
/ 01 октября 2019

Учитывая, что у вас есть два значения, которые могут отображаться в любых двух разных строках, я полагаю, что вы должны дважды присоединиться к одной и той же таблице. Вот то, что я считаю, будет работать для вас:

CREATE TABLE #tbl_1(HoleID int, GEOLFROM decimal(10,1), GEOLTO decimal(10,1))
CREATE TABLE #tbl_2(HoleID int, SAMPFROM decimal(10,1), SAMPTO decimal(10,1))

INSERT INTO #tbl_1 VALUES(1,28.5,36)
INSERT INTO #tbl_2 VALUES(1,28.5,29.5)
INSERT INTO #tbl_2 VALUES(1,29.5,32)
INSERT INTO #tbl_2 VALUES(1,32,34.5)
INSERT INTO #tbl_2 VALUES(1,34.5,36.1)
INSERT INTO #tbl_2 VALUES(1,36.1,38)

SELECT COUNT(*)
from #tbl_1 t1
LEFT JOIN #tbl_2 t2 on t1.HoleID = t2.HoleID AND (t1.GEOLFROM = t2.SAMPFROM)
LEFT JOIN #tbl_2 t3 on t1.HoleID = t3.HoleID AND (t1.GEOLTO = t3.SAMPTO)
WHERE t3.HoleID IS NOT NULL and t2.HoleID IS NOT NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...