Выбрать только те записи которые имеют одну связь?
Есть две таблицы "сотрудники" и "отделы" которые через промежуточную таблицу имеют связь многие ко многим. Мне нужно получить те отделы к которым привязан только один сотрудник. Я не могу понять как проверить что сотрудник данного отдела привязан только к нему не перебирая отделы каждого сотрудника. Интересует пример запроса который поможет получить сотрудника привязанного только к запрашиваемому отделу.
Дополнительно:
Если вам надо получить отделы, в которых только один сотрудник, то какая разница, в скольких отделах сотрудник работает?
Сделать join таблицы отделов с промежуточной таблицей, группировку по отделу и отбор по count.
-
$model = EmployeesDepartments::find() ->select('*, COUNT(*) as count') ->groupBy('employees_id') ->having('count < 2') ->andHaving('departments_id =' . $id) ->all();
$model = EmployeesDepartments::find() ->select('*, COUNT(*) as count') ->groupBy('employees_id') ->having('count < 2') ->andHaving('departments_id =' . $id) ->all();
Получилось вот так вот на orm Yii2
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для выбора только тех записей, которые имеют одну связь, вам нужно использовать оператор SQL JOIN. JOIN позволяет объединить данные из двух или более таблиц на основе определенного условия. Для вашего конкретного случая, вам нужно будет использовать INNER JOIN, который вернет только те записи, которые имеют соответствующие значения в обеих таблицах.
Пример кода на языке PHP с использованием SQL JOIN для выбора только записей с одной связью:
$query = "SELECT * FROM table1 INNER JOIN table2 ON table1.column = table2.column"; $result = mysqli_query($connection, $query); if(mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { // обработка данных } } else { echo "Нет записей с одной связью"; }
В этом примере мы выбираем все столбцы из таблицы table1, которые имеют соответствующие значения в столбце column таблицы table2. Вы можете заменить table1, table2, column на соответствующие названия ваших таблиц и столбцов.
Не забудьте подставить свои данные для подключения к базе данных ($connection) и обработки результатов запроса. Надеюсь, это поможет вам решить вашу проблему с выбором записей с одной связью.