繁体   English   中英

从另一个相关表的计数只有一个的表中选择

[英]Select from table where count from another related table is only one

我有两个表都通过 id 相关......我想要使用 eloquent 或 mysql 语句的单个查询在下面执行......:

  clients
 -----------
| Id | name |
 -----------
| 1  | name1|
 -----------
| 2  | name2|
 -----------
| 3  | name3|
 -----------

  requests
 ----------------
| Id | client_id |
 ----------------
| 1  | 1         |
 ----------------
| 2  | 1         |
 ----------------
| 3  | 2         |
 ----------------
| 4  | 3         |
 ----------------
| 5  | 3         |
 ----------------

我只希望结果只显示只有一个请求的客户

result
 ----------------
| Id | name      |
 ----------------
| 2  | name2     |
 ----------------

如何在 mysql 或 laravel elquent 中制作它????

您可以尝试以下操作

DB::table('requests')->groupBy('client_id')->havingRaw('COUNT(*) = 1')->get();

假设你有工作雄辩的模型和关系,你可以这样做:

Client::has('requests', '=', 1)->get();

下一个查询应该可以解决您的问题:

SELECT 
    clients.Id,
    clients.name
FROM requests
JOIN clients ON clients.Id = requests.client_id
GROUP BY clients.Id, clients.name
HAVING COUNT(*) = 1
;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM