Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在laravel中进行自连接以产生不同的值_Sql_Laravel_Eloquent - Fatal编程技术网

Sql 如何在laravel中进行自连接以产生不同的值

Sql 如何在laravel中进行自连接以产生不同的值,sql,laravel,eloquent,Sql,Laravel,Eloquent,我想要实现的是用户id为8的book\u id与用户id为3的book\u id匹配的行。但仅选择用户的行。而且还与book_id不同。所以我希望结果是: 第1排, 第2排 到目前为止,我有这个,但不幸的是,我一直得到第6行以及第2行和第1行。基本上,我希望结果是不同的图书id,但我不知道如何做到这一点 ID|user_id |book_id |author 1 |8 |7 |bill 2 |8 |6 |sally 3 |3

我想要实现的是用户id为8的book\u id与用户id为3的book\u id匹配的行。但仅选择用户的行。而且还与book_id不同。所以我希望结果是:

第1排, 第2排

到目前为止,我有这个,但不幸的是,我一直得到第6行以及第2行和第1行。基本上,我希望结果是不同的图书id,但我不知道如何做到这一点

ID|user_id   |book_id   |author
1 |8         |7         |bill
2 |8         |6         |sally
3 |3         |7         |rob
4 |3         |4         |sarah
5 |3         |6         |jane
6 |8         |7         |frank

你有两个选择。您可以使用distinct或groupBy

备选案文1:

$check = DB::table('table as u1') 
->join('table as u2','u1.book_id', '=', 'u2.book_id')
->where('u2.user_id', 8)->where('u1.user_id', 3)
            ->get();
备选案文2:

$check = DB::table('table as u1')
    ->join('table as u2','u1.book_id', '=', 'u2.book_id')
    ->where('u2.user_id', 8)->where('u1.user_id', 3)
    ->distinct()
    ->get();

在MySQL 5.7等价的MySQL查询中,默认情况下启用与其他数据库兼容并使用enabled的适当选项,以获得所需的结果

选择t* 从…起 选择MINt1.id 从表1 t1连接到表1 t2 在t1.book\u id=t2.book\u id上 其中t1.user_id=8 和t2.user_id=3 按t1.user\u id、t1.book\u id分组 q加入表1 t 关于q.id=t.id 输出:

$check = DB::table('table as u1')
    ->join('table as u2','u1.book_id', '=', 'u2.book_id')
    ->where('u2.user_id', 8)->where('u1.user_id', 3)
    ->groupBy('u1.book_id')
    ->get();

我认为它可能是groupBy变体2,但出于某种原因,我只得到了第1行。变量1我得到第1、2和6行。@Billy将组从user\u id更改为u1.book\u id | ID | user_id | book_id | author | |----|---------|---------|--------| | 1 | 8 | 7 | bill | | 2 | 8 | 6 | sally |