Сообщение об ошибке

  • Deprecated function: Methods with the same name as their class will not be constructors in a future version of PHP; views_display has a deprecated constructor в функции require_once() (строка 3066 в файле /home/users/m/matskywalker/domains/skywalkeradmin.ru/includes/bootstrap.inc).
  • Deprecated function: Methods with the same name as their class will not be constructors in a future version of PHP; views_many_to_one_helper has a deprecated constructor в функции require_once() (строка 113 в файле /home/users/m/matskywalker/domains/skywalkeradmin.ru/sites/all/modules/ctools/ctools.module).

Понимание SQL. Начало.

Есть таблица A с полем id, есть таблица B тоже с полем id. Как получить все B.id, которых нет в A?
Так как заголовок данного поста включает в себя слово "понимание", то простым примером навроде:

SELECT B.id FROM B LEFT JOIN A ON (B.id=A.id) WHERE A.id IS NULL

ограничиваться не будем. Тем более, что можно еще и так:
SELECT B.id FROM B WHERE B.id NOT IN (SELECT A.id FROM A)

Для понимания: Команда Left Join создает виртуальную таблицу, на основе таблиц, указанных в условии. Проставляется связь между данными таблицами, однако, даже если в правой таблице не окажется соответствий левому ID, то данному полю при слиянии будет присвоено значение NULL.

Во втором примере показан простой вложенный SELECT
Результат обоих запросов будет одинаковым, но 2-й выполняется дольше.