質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

1564閲覧

LaravelクエリビルダのMySql条件分岐について

supermaruetsu

総合スコア148

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/05/02 02:04

編集2017/05/02 07:11

MySqlについて質問です。
下記のようなテーブルがあります。
簡潔にお伝えできるようJoinしたテーブルの一部を抜粋しております。

1つのtaskに対してuserが2名で取り組む状況を管理しようと考えております。
そのためtask_idは昇順に2つずつあがってくるよう考えておりましたが、task_id=10が1つだけで出てしまいました。
これは別テーブルのCar_idのCarが事故に合い廃車となったためテーブルから削除したことによるものです。
そこでtask_idが1つしかない場合、データを吐き出さないようにクエリを組みたいのですが、よく分からずご教示頂けないでしょうか。

Laravelのクエリビルダで作成しております。
どうぞよろしくお願いいたします。

+-----------+-----------+----------+ | name | task_id | car_id | +-----------+-----------+----------+ | tanabe | 2 | 4 | | shimizu | 2 | 1 | | tanabe | 6 | 14 | | shimizu | 6 | 1 | | tanabe | 8 | 4 | | tanaka | 8 | 7 | | tanabe | 10 | 5 | | tanaka | 12 | 7 | | tanabe | 12 | 4 | | tanabe | 14 | 12 | | shimizu | 14 | 1 | | tanabe | 16 | 14 | | tanaka | 16 | 6 | | tanabe | 18 | 16 | | tanaka | 18 | 7 | | tanabe | 20 | 14 | | tanaka | 20 | 9 | +-----------+-----------+----------+

補足)

早々のご回答ありがとうございます。
下記のようなtask_id=10が除外されたデータ形式で抽出できればと思います。
説明が不足しており申し訳ございません。

+-----------+-----------+----------+ | name | task_id | car_id | +-----------+-----------+----------+ | tanabe | 2 | 4 | | shimizu | 2 | 1 | | tanabe | 6 | 14 | | shimizu | 6 | 1 | | tanabe | 8 | 4 | | tanaka | 8 | 7 | | tanaka | 12 | 7 | | tanabe | 12 | 4 | | tanabe | 14 | 12 | | shimizu | 14 | 1 | | tanabe | 16 | 14 | | tanaka | 16 | 6 | | tanabe | 18 | 16 | | tanaka | 18 | 7 | | tanabe | 20 | 14 | | tanaka | 20 | 9 | +-----------+-----------+----------+
mysql> select task_id, car_id ,user_id from tasks; +-----------+----------+---------+ | task_id | car_id | user_id | +-----------+----------+---------+ | 0 | 3 | 2 | | 0 | 8 | 2 | | 2 | 1 | 1 | | 2 | 4 | 1 | | 4 | 9 | 3 | | 4 | 2 | 3 | | 6 | 14 | 1 | | 6 | 1 | 1 | | 8 | 4 | 1 | | 8 | 7 | 1 | | 10 | 5 | 1 | | 10 | 3 | 1 | | 12 | 4 | 1 | | 12 | 7 | 1 | | 14 | 12 | 1 | | 14 | 1 | 1 | | 16 | 14 | 1 | | 16 | 6 | 1 | | 18 | 16 | 1 | | 18 | 7 | 1 | | 20 | 14 | 1 | | 20 | 9 | 1 | +-----------+----------+---------+
mysql> select id,user_id,deleted_at from cars; +----+---------+---------------------+ | id | user_id | deleted_at | +----+---------+---------------------+ | 1 | 3 | NULL | | 2 | 3 | 2017-04-20 12:25:15 | | 3 | 3 | 2017-04-20 12:25:11 | | 4 | 1 | NULL | | 5 | 1 | NULL | | 6 | 2 | NULL | | 7 | 2 | NULL | | 8 | 2 | NULL | | 9 | 2 | NULL | | 10 | 1 | NULL | | 11 | 1 | NULL | | 12 | 1 | NULL | | 13 | 1 | NULL | | 14 | 1 | NULL | | 15 | 1 | NULL | | 16 | 1 | NULL | +----+---------+---------------------+

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

未検証ですが、havingを使えばうまくいくかと思います。
下記のSQL()でtask_idが2件重複しているtask_idが抽出できるので、このtask_idをキーにしてデータを抽出してみては如何でしょうか?

SQL

1$tasks = DB::table('tasks') 2 ->select('task_id') 3 ->groupBy('task_id') 4 ->havingRaw('count(task_id) = 2') 5 ->get();

投稿2017/05/02 02:20

motuo

総合スコア3027

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんな感じでしょうか?

SQL

1select * from tbl 2where task_id in(select task_id as c from tbl group by task_id 3having count(*)=2) 4

投稿2017/05/02 02:18

yambejp

総合スコア114833

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問