Выборка строк из двух таблиц sql - PullRequest
0 голосов
/ 18 сентября 2011

У меня есть две таблицы RecordMaster и Dummy

Оба имеют такие столбцы, как Mobile_Number и Insert_Date

Я хочу ряд, похожий на

1) из таблицы Dummy Я хочу получить те строки, у которых Mobile_Number И Insert_Date такие же, как у RecordMaster.

2) из ​​таблицы Dummy Я хочу получить те строки, чьи Mobile_Number и Insert_Date отличаются от RecordMaster.

После этого в 1) условии я хочу получить только те строки, чье значение Cpv_Status не равно нулю. (CPV_STATUS) - это один столбец в таблице Dummy.

Помогите мне, пожалуйста ........

Ответы [ 2 ]

1 голос
/ 18 сентября 2011
  1. Для удовлетворения ваших 1) и 3) потребностей (опционально укажите WHERE по мере необходимости).
SELECT d.* 
FROM Dummy d 
INNER JOIN RecordMaster r 
   ON r.mobile_number = d.mobile_number
   AND r.insert_date = d.insert_date
WHERE d.Cpv_Status IS NOT NULL 

2.

SELECT d.* 
FROM Dummy d
WHERE NOT EXISTS 
    (SELECT 1 
     FROM RecordMaster r 
     WHERE r.mobile_number = d.mobile_number
     AND r.insert_date = d.insert_date
    )

Чтобы вставить это:

INSERT INTO RecordMaster(mobile_number, insert_date)
  SELECT d.mobile_number, insert_date 
  FROM Dummy d
  WHERE NOT EXISTS 
    (SELECT 1 
     FROM RecordMaster r 
     WHERE r.mobile_number = d.mobile_number
     AND r.insert_date = d.insert_date
    )
0 голосов
/ 18 сентября 2011

Следующий запрос выдаст вам все записи в фиктивном файле, которые соответствуют записям в RecordMaster

SELECT a.Mobile_Number,a.Insert_Date ,a.Cpv_Status
FROM RecordMaster a, Dummy b
WHERE a.Mobile_Number = b.Mobile_Number and a.Insert_Date = b.Insert_Date

Следующий запрос даст вам записи в Dummy, у которых нет соответствующих записей в RecordMadter

SELECT a.Mobile_Number,a.Insert_Date ,a.Cpv_Status
FROM Dummy a
WHERE STR(a.Mobile_Number)+STR(a.Mobile_Number) not in 
(SELECT STR(Mobile_Number)+STR(Insert_Date) FROM RecordMaster)

если вам нужно объединить оба этих результата в одном наборе результатов, используйте UNION следующим образом

SELECT a.Mobile_Number,a.Insert_Date ,a.Cpv_Status
FROM RecordMaster a, Dummy b
WHERE a.Mobile_Number = b.Mobile_Number and a.Insert_Date = b.Insert_Date

UNION

SELECT a.Mobile_Number,a.Insert_Date ,a.Cpv_Status
FROM Dummy a
WHERE STR(a.Mobile_Number)+STR(a.Mobile_Number) not in 
(SELECT STR(Mobile_Number)+STR(Insert_Date) FROM RecordMaster)

Наконец, вы можете применить любой фильтр к окончательному набору результатов, например так:

select * from (

SELECT a.Mobile_Number,a.Insert_Date , a.Cpv_Status,a.Cpv_Status
FROM RecordMaster a, Dummy b
WHERE a.Mobile_Number = b.Mobile_Number and a.Insert_Date = b.Insert_Date

UNION

SELECT a.Mobile_Number,a.Insert_Date ,a.Cpv_Status
FROM Dummy a
WHERE STR(a.Mobile_Number)+STR(a.Mobile_Number) not in 
(SELECT STR(Mobile_Number)+STR(Insert_Date) FROM RecordMaster)

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