我有2张桌子:
用户
------------------------------------
| 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条件,该条件仅选择没有狗的用户。
这是否可行,还是我必须更改数据库?
答案 0 :(得分:0)
使用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
答案 1 :(得分:0)
像这样吗?
function open(){
x=document.getElementById("demo");
x.style.display="block";
}
这应该为您提供在dogs表的userid列中没有ID的所有用户。
答案 2 :(得分:0)
对于您的描述(= 1个用户只能有1条狗),DB应该是:
用户
------------------------------------------------
| id (PK) | password | name | role | dogid (FK)|
------------------------------------------------
狗
------------------------
| dogid (PK) | dogname |
------------------------
然后
SELECT * FROM USERS WHERE DogID IS NULL