Не повторяющийся вопрос !!!
Я использую CodeIgniter 3 - класс построителя запросов с MySQLi.
$query = $this->db
->select('category_level_1.id, category_level_1.category')
->from('category_level_1')
->join('category_level_2', 'category_level_2.cat_lvl1_id != category_level_1.id', 'inner')
->group_by('category_level_1.id')
->get();

Необходимо вывести только те записи в таблице 'category_level_1', которые не связаны с таблицей 'category_level_2'.
Как показано выше, выходные значения не такие, как ожидалось в соответствии с оператором «знак равно»: не работаетс участием'внутреннее соединение.
Да, я тоже пробовал .. Но результат не такой, как ожидалось.





$query = $this->db ->select('category_level_1.id, category_level_1.category') ->from('category_level_1') ->join('category_level_2', 'category_level_2.cat_lvl1_id <> category_level_1.id', 'inner') ->group_by('category_level_1.id') ->get();
Я попробую и дам знать :)
Я предлагаю вам попробовать использовать left или rightjoin и пункт where. Попробуйте следующее:
$query = $this->db
->select('category_level_1.id, category_level_1.category')
->from('category_level_1')
->join('category_level_2', 'category_level_2.cat_lvl1_id = category_level_1.id', 'left')
->where('category_level_2.cat_lvl1_id IS NULL')
->group_by('category_level_1.id')
->get();
Я попробую и дам знать :)
Надеюсь, что это поможет вам :
$sql = "SELECT id, category
FROM category_level_1
WHERE id NOT IN (SELECT DISTINCT cat_lvl1_id FROM category_level_2)";
$query = $this->db->query($sql);
print_r($query->result());
Выход :
Array
(
[0] => stdClass Object
(
[id] => 93
[category] => dummy
)
)
Спасибо. Я попробую так и дам знать :)
Это тоже работает. Спасибо за ваши усилия. Этот способ хорош для тех, кто не знаком с классами CodeIgniter Query Builder.
Я только что быстро прочитал это, и хотя я не эксперт по SQL, объединение таблиц с использованием «не равно» (! =) Кажется странным. Я бы использовал «равно» (=) и поместил бы условие
category_level_2.cat_lvl1_id != category_level_1.idв предложениеwhere.