diff --git a/app/models.py b/app/models.py
index bdbd11fcacc34233d7665f5d4d70169d24489bb6..0214a12f5e50c23787a9656c63456362edc3c7c8 100644
--- a/app/models.py
+++ b/app/models.py
@@ -1044,7 +1044,7 @@ class AnsibleGroup(CreatedMixin, db.Model):
                 Host.query.join(Host.interfaces)
                 .join(Interface.network)
                 .join(Network.scope)
-                .filter(NetworkScope.name == self.name)
+                .filter(NetworkScope.name == self.name, Interface.name == Host.name)
                 .order_by(Host.name)
                 .all()
             )
@@ -1052,7 +1052,7 @@ class AnsibleGroup(CreatedMixin, db.Model):
             return (
                 Host.query.join(Host.interfaces)
                 .join(Interface.network)
-                .filter(Network.vlan_name == self.name)
+                .filter(Network.vlan_name == self.name, Interface.name == Host.name)
                 .order_by(Host.name)
                 .all()
             )
diff --git a/tests/functional/test_models.py b/tests/functional/test_models.py
index 84930807067c2d7dac6531ed2d086eb884aac9ae..4c25661f547091cd97fe29a17195bafd1fc7c3e1 100644
--- a/tests/functional/test_models.py
+++ b/tests/functional/test_models.py
@@ -271,24 +271,25 @@ def test_ansible_dynamic_network_group(
 ):
     network1 = network_factory(vlan_name="network1")
     network2 = network_factory(vlan_name="network2")
-    interface1_n1 = interface_factory(network=network1)
-    interface2_n1 = interface_factory(network=network1)
-    interface1_n2 = interface_factory(network=network2)
-    host1_n1 = host_factory(name="host1", interfaces=[interface1_n1])
-    host2_n1 = host_factory(name="host2", interfaces=[interface2_n1])
-    host1_n2 = host_factory(interfaces=[interface1_n2])
-    group_n1 = ansible_group_factory(
+    host1 = host_factory(name="host1")
+    host2 = host_factory(name="host2")
+    host3 = host_factory(name="host3")
+    interface_factory(name="host1", host=host1, network=network1)
+    interface_factory(name="host2", host=host2, network=network1)
+    interface_factory(name="host2-2", host=host2, network=network2)
+    interface_factory(name="host3", host=host3, network=network2)
+    group1 = ansible_group_factory(
         name="network1", type=models.AnsibleGroupType.NETWORK
     )
-    group_n2 = ansible_group_factory(
+    group2 = ansible_group_factory(
         name="network2", type=models.AnsibleGroupType.NETWORK
     )
-    group_n3 = ansible_group_factory(
-        name="unknown", type=models.AnsibleGroupType.NETWORK
-    )
-    assert group_n1.hosts == [host1_n1, host2_n1]
-    assert group_n2.hosts == [host1_n2]
-    assert group_n3.hosts == []
+    group3 = ansible_group_factory(name="unknown", type=models.AnsibleGroupType.NETWORK)
+    # host2 has an interface on network1 and one on network2.
+    # It's only in group1, because its main interface (same name as host) is on network1.
+    assert group1.hosts == [host1, host2]
+    assert group2.hosts == [host3]
+    assert group3.hosts == []
 
 
 def test_ansible_dynamic_network_scope_group(
@@ -300,27 +301,30 @@ def test_ansible_dynamic_network_scope_group(
 ):
     scope1 = network_scope_factory(name="scope1")
     scope2 = network_scope_factory(name="scope2")
-    network1_s1 = network_factory(scope=scope1)
-    network2_s1 = network_factory(scope=scope1)
-    network1_s2 = network_factory(scope=scope2)
-    interface1_s1 = interface_factory(network=network1_s1)
-    interface2_s1 = interface_factory(network=network2_s1)
-    interface1_s2 = interface_factory(network=network1_s2)
-    host1_s1 = host_factory(name="host1", interfaces=[interface1_s1])
-    host2_s1 = host_factory(name="host2", interfaces=[interface2_s1])
-    host1_s2 = host_factory(interfaces=[interface1_s2])
-    group_s1 = ansible_group_factory(
+    network1 = network_factory(scope=scope1)
+    network2 = network_factory(scope=scope1)
+    network3 = network_factory(scope=scope2)
+    host1 = host_factory(name="host1")
+    host2 = host_factory(name="host2")
+    host3 = host_factory(name="host3")
+    interface_factory(name="host1", host=host1, network=network1)
+    interface_factory(name="host2", host=host2, network=network2)
+    interface_factory(name="host2-2", host=host2, network=network3)
+    interface_factory(name="host3", host=host3, network=network3)
+    group1 = ansible_group_factory(
         name="scope1", type=models.AnsibleGroupType.NETWORK_SCOPE
     )
-    group_s2 = ansible_group_factory(
+    group2 = ansible_group_factory(
         name="scope2", type=models.AnsibleGroupType.NETWORK_SCOPE
     )
-    group_s3 = ansible_group_factory(
+    group3 = ansible_group_factory(
         name="unknown", type=models.AnsibleGroupType.NETWORK_SCOPE
     )
-    assert group_s1.hosts == [host1_s1, host2_s1]
-    assert group_s2.hosts == [host1_s2]
-    assert group_s3.hosts == []
+    # host2 has an interface on scope1 and one on scope2.
+    # It's only in group1, because its main interface (same name as host) is on scope1.
+    assert group1.hosts == [host1, host2]
+    assert group2.hosts == [host3]
+    assert group3.hosts == []
 
 
 @pytest.mark.parametrize("status", [None, "FINISHED", "FAILED", "STARTED"])