MS-доступ, выбирающий проблемные данные - PullRequest
1 голос
/ 31 мая 2011

У меня есть данные, которые выглядят следующим образом:

alex hub
liza fds
harry ok
lena yyy
liza ok

Я хотел бы SQL-заявление, которое даст мне это:

alex hub
lena yyy

мне нужно вернуть все column1, где естьне соответствует "ok" для столбца 2

, обратите внимание, что если есть только ОДИН "ok", этого достаточно, чтобы не возвращать эти данные

большое спасибо за вашу помощь

Ответы [ 3 ]

2 голосов
/ 31 мая 2011

Попробуйте этот SQL-запрос:

select Col1, Col2 from MyTable
where Col1 not in (
    select Col1 
    from MyTable 
    where Col2 = 'ok'
)
1 голос
/ 31 мая 2011

LEFT JOIN для подзапроса строк "ok" и WHERE (((t2.column1) Is Null)) возвращают только те значения column1, у которых нет строки со значением "ok" в качестве column2.

SELECT t1.column1, t1.column2
FROM Table1 AS t1
    LEFT JOIN [
        SELECT column1, column2
        FROM Table1 WHERE column2 = "ok"]. AS t2
    ON t1.column1 = t2.column1
WHERE (((t2.column1) Is Null));
0 голосов
/ 31 мая 2011

Мне кажется, что самый простой способ сделать это просто:

SELECT people.personname, people.status
FROM people
WHERE [people]![status]<>'ok';

Иногда полезно выполнить упражнение по реализации вашего ответа в Access. Я обнаружил, что не могу использовать name в качестве названия столбца, и существует третья запись, которая удовлетворяет условию.

personname  status
==========  ======
alex        hub
liza        fds
lena        yyy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...