Пасаны, а как-то можно сделать такое? Есть 2 таблицы: 1. loans 2. utm Короче таблицы связаны через id в первой и loan_id во второй. В первой таблице запись есть всегда, во второй её может не быть, а может быть несколько с разными utm_source. Нужно вытащить все записи из первой, когда во второй таблице к ним нет записи с utm_source='admitad'. Это возможно сделать одним SQL-запросом? --- Добавлено --- Я думал что можно как-то так, но не прокатывает. Ругается: Unknown column 'lid' in 'where clause' PHP: "SELECT `id` AS `lid` FROM `loans` WHERE (SELECT `id` FROM `utm` WHERE `loan_id`= `lid` AND `utm_source`='admitad') IS NULL"
PHP: SELECT id AS lid FROM `loans` WHERE id NOT IN ( SELECT loan_id FROM `utm` WHERE utm_source='admitad' );
Я правильно понимаю, что такой запрос будет сильно грузить сервер, если в таблице utm много записей? Оно же внутрь NOT IN вытащит вообще все айдишники. У меня получилось сделать так, но не знаю на сколько это правильно. На тестах вроде работает, но в продакшен ещё не выкладывал. PHP: SELECT `id` FROM `loans` AS `l` WHERE (SELECT `id` FROM `utm` WHERE `loan_id`= l.`id` AND `utm_source`='admitad') IS NULL
1) много записей это для вас сколько? сотни, тысячи, миллионы...? 2) ну так задача стоит проверить среди всех айдишников. значит придется проверить среди всех. телепатия могла бы помочь, но это фича пока это в стадии бета тестирования 3) думаю, при наличии индексов, будет работать быстро.