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

Мне нужно выбрать данные из двух таблиц. Однако есть два столбца, где, если одна или обе строки читают НЕТ, я хочу пропустить это.

Таблица 1

a--b--c-
1  r  l
2  t  f
3  d  c

Таблица 2

d--e--f--g-
1  r NO NO
2  r YES NO
3  r YES YES

QUERY:

 SELECT
    talbe1.a,
    table1.b,
    table1.c,
    table2.d,
    table2.e,
    table2.f,
    table2.g,
    FROM table1 INNER JOIN 
    table2 on table1.b = table2.e
    WHERE 'no' NOT IN (SELECT table2.f, table2.g FROM table2)

Ответы [ 6 ]

4 голосов
/ 20 июля 2011

Должно быть так просто:

  SELECT
    talbe1.a,
    table1.b,
    table1.c,
    table2.d,
    table2.e,
    table2.f,
    table2.g,
  FROM table1 INNER JOIN 
        table2 on table1.b = table2.e
  WHERE table2.f <> 'NO' AND table2.g <> 'NO'
3 голосов
/ 20 июля 2011

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

SELECT
  table1.a,
  table1.b,
  table1.c,
  table2.d,
  table2.e,
  table2.f,
  table2.g,
FROM table1 
LEFT JOIN table2 ON table1.b = table2.e
WHERE table2.f <> 'NO' AND table2.g <> 'NO'

Также не уверен насчет структуры ваших таблиц, но есть ли причина, по которой вы присоединяетесь к table1.b = table2.e?

2 голосов
/ 20 июля 2011
SELECT
    talbe1.a,
    table1.b,
    table1.c,
    table2.d,
    table2.e,
    table2.f,
    table2.g,
    FROM table1 INNER JOIN 
    table2 on table1.b = table2.e
        //if any of the f or g are not eqaul to "NO" only then select the result
        WHERE (table2.f != 'NO' AND table2.g != 'NO')

does not return if 
f = no and g = no
f = no and g = yes
f = yes and g = no

does return if
f = yes and g = yes
2 голосов
/ 20 июля 2011

Почему бы не сказать, что f = g и g = 'YES'?

0 голосов
/ 20 июля 2011

Вы должны использовать LEFT JOIN, а не INNER JOIN

SELECT
    talbe1.a,
    table1.b,
    table1.c,
    table2.d,
    table2.e,
    table2.f,
    table2.g,
  FROM table1 LEFT JOIN 
        table2 on table1.b = table2.e
WHERE table2.f <> 'NO' AND table2.g <> 'NO'
0 голосов
/ 20 июля 2011

Как насчет:

WHERE (table2.f <> 'no' AND table2.g <> 'no')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...