Rya*_*lay 4 php sqlite laravel
我在 SQLite 数据库中有主题表和教程表。我正在尝试选择当前教程。有我的桌子
科目表:
-------------------
| id | name |
-------------------
| 1 | Chemistry |
| 2 | Physic |
-------------------
Run Code Online (Sandbox Code Playgroud)教程表:
-----------------------------------------
| id | name | subj_id | completed |
-----------------------------------------
| 1 | chapter 1 | 1 | 1 |
| 2 | chapter 2 | 1 | 0 |
| 3 | chapter 3 | 1 | 0 |
| 4 | chapter 1 | 2 | 1 |
| 5 | chapter 2 | 2 | 1 |
| 6 | chapter 3 | 2 | 0 |
| 7 | chapter 4 | 2 | 0 |
-----------------------------------------
Run Code Online (Sandbox Code Playgroud)我现在的口才是:
$query->where('completed', false)->groupBy('subj_id')->get();
Run Code Online (Sandbox Code Playgroud)
它返回以下内容:
-----------------------------------------
| id | name | subj_id | completed |
-----------------------------------------
| 3 | chapter 3 | 1 | 0 |
| 7 | chapter 4 | 2 | 0 |
-----------------------------------------
Run Code Online (Sandbox Code Playgroud)
现在我想选择 id 2 和 6。
-----------------------------------------
| id | name | subj_id | completed |
-----------------------------------------
| 2 | chapter 2 | 1 | 0 |
| 6 | chapter 3 | 2 | 0 |
-----------------------------------------
Run Code Online (Sandbox Code Playgroud)
如何使用sqlite获得id 2和6?
@zerofl4g 的帮助解决了我的问题。
@zerofl4g 帮助了这个雄辩。
$query->select(DB::raw("SELECT MIN(id), name, subj_id FROM tutorials
WHERE completed = 0 GROUP BY subj_id"));
Run Code Online (Sandbox Code Playgroud)
它对我不起作用,但对我有很大帮助。我不知道为什么不能从我这里工作的确切原因,但我认为我将它用作子查询。所以我得到了重复的选择和错误。它肯定适用于想要用作单个查询的人。
我的解决方案只是选择带有 DB::raw 的列, ->from('tutorials') 也是可选的,因为它是长查询的子查询
$query->select(DB::raw('MIN(id) as id, name, subj_id'))->from('tutorials')
->where('completed', false)->groupBy('subj_id');
Run Code Online (Sandbox Code Playgroud)
我使用的最终雄辩是
$query->select(DB::raw('MIN(id) as id, name, subj_id'))
->where('completed', false)->groupBy('subj_id');`
Run Code Online (Sandbox Code Playgroud)
希望有所帮助。