SQL - найти недостающие данные / отрицательный поиск - PullRequest
0 голосов
/ 04 декабря 2009

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

TravelEventID  RemarkNo    Keyword       Text  
 0001            1           TVL          LOWCOST BOOKING  
 0001            2           TVL          CREDIT CARD USED  
 0001            3           PSG          COST CENTRE REQUIRED  
 0001            4           PSG          EMPLOYEE NUM REQUIRED
 0002            1           TVL          CREDIT CARD USED
 0002            2           AGT          BOOKED BY AGENT
 0002            3           AGT          CONFIRM WITH AIRLINE
 0002            4           TVL          LOWEST FARE CONFIRMED
 0002            5           TVL          NO CANCELLATION CHARGE
 0003            1           TVL          LOWCOST BOOKING
 0003            2           TVL          CARRIER : EASYJET
 0003            3           TVL          LOWEST FARE CONFIRMED
 0004            1           TVL          LOWCOST BOOKING
 0004            2           TVL          CREDIT CARD USED

Мне нужно извлечь TravelEventID, где текст не содержит LOWCOST BOOKING. Из таблицы примера я хотел бы только 0002.

Я пытаюсь выполнить запрос, где Text <> 'LOWCOST BOOKING', однако он явно совпадает с большинством строк, и в результате я получаю все TravelEventID.

Надеюсь, я хорошо все объяснил! ура Даррен

Ответы [ 2 ]

3 голосов
/ 04 декабря 2009
SELECT DISTINCT T.TravelEventID
  FROM Table T 
 WHERE NOT EXISTS(SELECT * FROM Table T2 WHERE T.TravelEventID = T2.TravelEventID AND T2.Text = 'LOWCOST BOOKING')
2 голосов
/ 04 декабря 2009

Вы можете попробовать что-то вроде этого

SELECT DISTINCT TravelEventID
FROM Table WHERE TravelEventID NOT IN (
SELECT TravelEventID
FROM Table
WHERE Text = 'LOWCOST BOOKING'
)
...