Доброго времени суток уважаемые программисты! Подскажите как реализовать такую выборку. Имеется таблица `table_1` с полем `id_1`, в ней два значения - '1', '3' Так же имеется таблица `table_2` с полем `id_2`, в ней пять значений - '1', '2', '3', '4', '5' Как сделать выборку из `table_2` только тех значений, которых нет в `table_1`, то есть '2', '4', '5' ? Сейчас делаю это в PHP, но пришло время оптимизации )) и всю голову сломал уже, гугл не помог ((
Код (PHP): SELECT `t2`.* FROM `table_2` `t2` LEFT JOIN `table_1` `t1` ON ( `t2`.`id_2` = `t1`.`id_1` ) WHERE `t1`.`id_1` IS NULL;
Работает)) сейчас всё читаю учебники по MySQL, но не могу понять как сделать ту же выборку из `table_2`, если в `table_1` содержится еще поле `val_1`, и нужно учитывать толькое те записи, в которых `val_1` равен например 'ok' Делал так: Код (Text): SELECT `t2`.* FROM `table_2` `t2` LEFT JOIN `table_1` `t1` ON ( `t2`.`id_2` = `t1`.`id_1` ) WHERE `t1`.`id_1` IS NULL AND `t1`.`val_1` = 'ok'; Не работает (( Добавлено спустя 14 минут 36 секунд: УРА! Допер!))) Спасибо огромнейшее ))) Код (Text): SELECT `t2`.* FROM `table_2` `t2` LEFT JOIN `table_1` `t1` ON ( `t2`.`id_2` = `t1`.`id_1` ) WHERE `t1`.`id_1` IS NULL OR `t1`.`val_1` != 'ok'; Добавлено спустя 30 минут 33 секунды: Эффект совсем не тот которого ожидал (( очень долго выполняется запрос. Дело в том что в таблице `table_1` миллионы записей, и тысячи вариаций поля `val_1`, в `table_2` тоже десятки тысяч записей, и получается что в PHP у меня с `table_2` сравнивается лишь выбранная часть записей из `table_1`, а тут получается что сравниваются абсолютно все, и запрос выполняется по пол минуты даже с LIMIT 0,100. Можно ли как то оптимизировать данный запрос? Например: Код (Text): SELECT `t2`.* FROM `table_2` `t2` LEFT JOIN `table_1` `t1` WHERE `t1`.`val_1` = 'ok' ON ( `t2`.`id_2` = `t1`.`id_1` ) WHERE `t1`.`id_1` IS NULL; Этот код не работает, но думаю смысл понятен =)