我有两张table:
用户
------------------------------------
| id (PK) | password | name | role |
------------------------------------
狗
-------------------------------------------
| dogid (PK) | userid (FK : id) | dogname |
-------------------------------------------
我做了一个表单,你可以链接一个用户到一只狗,但每个用户只能有一只狗。我做了一个组合框,你可以选择一个用户,链接到狗。这很管用
<?php
$sql = "SELECT * FROM users INNER JOIN dogs ON users.username = dogs.userid WHERE users.role = 'dogowner' ORDER BY name";
$stmt = $con->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll();
?>
<select id="gebrid" name="gebrid">
<?php foreach($result as $pers): ?>
<option value="<?= $pers['username']; ?>"><?= $pers['name']; ?></option>
<?php endforeach; ?>
</select>
上面的代码选择角色为“dogowner”的所有用户。我想要第二个where条件,它只选择没有狗的用户。
这是可能的,还是我必须改变我的数据库?
3条答案
按热度按时间fae0ux8s1#
使用
left join
并添加dogs.userid IS NULL
```SELECT users.*
FROM users
LEFT JOIN dogs ON users.id = dogs.userid
WHERE users.role = 'dogowner'
AND dogs.userid IS NULL
ORDER BY users.name
u5rb5r592#
根据您的描述(=1个用户只能有1只狗),db应该是:
用户
狗
然后
de90aj5v3#
像这样的?
这将为您提供dogs表中userid列中没有id的所有用户。