Выберите из таблицы, где счет из другой связанной таблицы только один - PullRequest
0 голосов
/ 09 февраля 2020

У меня есть две таблицы буксировки, связанные по 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 elequent ????

Ответы [ 3 ]

1 голос
/ 09 февраля 2020

Вы можете попробовать следующее

DB::table('requests')->groupBy('client_id')->havingRaw('COUNT(*) = 1')->get();
1 голос
/ 10 февраля 2020

При условии, что у вас есть рабочие красноречивые модели и отношения, которые вы могли бы сделать:

Client::has('requests', '=', 1)->get();
0 голосов
/ 09 февраля 2020

Следующий запрос должен решить вашу проблему:

SELECT 
    clients.Id,
    clients.name
FROM requests
JOIN clients ON clients.Id = requests.client_id
GROUP BY clients.Id, clients.name
HAVING COUNT(*) = 1
;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...