Найти пустые значения

Статус
В этой теме нельзя размещать новые ответы.

RedRabbit

Мой дом здесь!
Регистрация
11 Июл 2008
Сообщения
607
Реакции
256
Появилась задачка. Есть 4 таблицы

Код:
CREATE TABLE [table1] (
  [field1] TEXT,
  [field2] TEXT,
  [field3] TEXT,
  [field4] TEXT,
  [field5] TEXT,
  [field6] TEXT,
  [field7] TEXT,
  [field8] TEXT,
  [field9] TEXT,
  [field10] TEXT,
  CONSTRAINT [] PRIMARY KEY ([field1]) ON CONFLICT REPLACE);

CREATE TABLE [table2] (
  [field1] TEXT,
  [field2] TEXT,
  [field3] TEXT,
  [field4] TEXT,
  [field5] TEXT,
  CONSTRAINT [] PRIMARY KEY ([field2]) ON CONFLICT REPLACE);

CREATE TABLE [table3] (
  [field1] TEXT,
  [field2] TEXT,
  [field3] TEXT,
  [field4] TEXT,
  [field5] TEXT,
  CONSTRAINT [] PRIMARY KEY ([field2]) ON CONFLICT REPLACE);

CREATE TABLE [table4] (
  [field1] TEXT,
  [field2] TEXT,
  [field3] TEXT,
  [field4] TEXT,
  [field5] TEXT,
  CONSTRAINT [] PRIMARY KEY ([field2]) ON CONFLICT REPLACE);
Таблица 1 основная и [field1] искомое значение, остальные таблицы содержат [field1] и его дополнительные свойства.

Нужно найти в таблице 1 все строки, где [field4] равен пустоте, а также где [field1] не встречается в таблицах [table2],[table3],[table4]
Синтаксис Sqlite.
Помогите пожалуйста!

Я правильно написал???
Код:
SELECT * FROM table1 WHERE field4='' AND field1 NOT IN (SELECT field1 FROM table2) AND field1 NOT IN (SELECT field1 FROM table3) AND field1 NOT IN (SELECT field1 FROM table4)
 
Последнее редактирование:
Привет!

В принципе - да. Единственный момент, не учтено, что field4 может быть строкой из пробелов, а также NULL. Поэтому предлагаю так:
Код:
SELECT * FROM table1 WHERE (trim(field4)='' OR field4 is NULL) AND field1 NOT IN (SELECT field1 FROM table2 UNION SELECT field1 FROM table3 UNION SELECT field1 FROM table4);
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху