当前位置: 首页 > 知识库问答 >
问题:

如何多次联接表并每次检索一个列值

艾宏远
2023-03-14

我有一个Laravel 5.8项目,我需要加入3个表来显示一些结果。

基本上,我已经将所有自定义id存储在一个名为basinfos的表中。

例如,这里有两个自定义ID,我需要检索它们的bas\u值

所以我试了一下:

$records = DB::table('members')
            ->where('mys_olp_id',4)
            ->join('students', 'members.mbr_usr_id', '=', 'students.std_mbr_id')
            ->join('baseinfos', 'students.std_degree_id', '=', 'baseinfos.bas_id')
            ->join('baseinfos', 'members.mbr_gender_id', '=', 'baseinfos.bas_id')
            ->select('baseinfos.bas_value', 'baseinfos.bas_value')
            ->get()->toArray();

但这是错误的,并向我展示了错误:

SQLSTATE[42000]:语法错误或访问冲突:1066不唯一

所以我需要这样说:

// as student_degree
->join('baseinfos', 'students.std_degree_id', '=', 'baseinfos.bas_id') 

// as member_gender
->join('baseinfos', 'members.mbr_gender_id', '=', 'baseinfos.bas_id') 

然后:

->select('student_degree', 'member_gender')

我该怎么做呢?

共有1个答案

庞鸿骞
2023-03-14

请尝试在alias中使用以下命令:

$records = DB::table('members ass mm')
            ->where('mm.mys_olp_id',4)
            ->join('students as ss', 'mm.mbr_usr_id', '=', 'ss.std_mbr_id')
            ->join('baseinfos as bif', 'ss.std_degree_id', '=', 'bif.bas_id')
            ->join('baseinfos as bifs', 'mm.mbr_gender_id', '=', 'bifs.bas_id')
            ->select('mm.*')
            ->get()->toArray();

如果适合您,也可以使用leftJoin:

$records = DB::table('members ass mm')
            ->where('mm.mys_olp_id',4)
            ->leftJoin('students as ss', 'mm.mbr_usr_id', '=', 'ss.std_mbr_id')
            ->leftJoin('baseinfos as bif', 'ss.std_degree_id', '=', 'bif.bas_id')
            ->leftJoin('baseinfos as bifs', 'mm.mbr_gender_id', '=', 'bifs.bas_id')
            ->select('mm.*')
            ->get()->toArray();
 类似资料:
  • 问题内容: 我遵循Presentation Model模式对一些屏幕进行编码。 我把一些豆子放在一个 我将在中显示此列表的内容,这要归功于 我还想同时在组合框(以表单的形式)中显示此列表中的 某些记录* , 并同时 在JList中显示 其他 记录。 *** 这三个屏幕(及其模型)彼此独立 如何管理在我的列表中添加{一个或多个} /删除{一个或多个}并在各处实时查看更改? 我将要编写自己的Obser

  • 我正在编写一个程序,在密码的末尾连接一个单词,然后计算SHA-256散列。稍后,在十六进制结果的末尾再次添加字,并使用sha256计算新的哈希。 我要把这个重复100遍。每次我想打印散列。 在伪代码中如下所示: 我目前正在通过哈希两次来测试我的代码: 让我们暂时忘记这个连接。 例如无法理解为什么下面两个代码会产生不同的结果: 代码1: 代码二: 我的问题是:每次将字级联并以正确的方式再次编码成字节

  • 有人说 lrange key 0 -1 这个只是读取啊,可以反复读取,数据不会删除。 lpop一次只能弹出一个。

  • 假设我有两个表和。包含和列。有两列和,它们链接回的列。

  • 问题内容: 我想做的是检索一个PHP文件的内容,并每60秒将它插入一个div中,基本上刷新了动态div。到目前为止,我已经提出了以下代码,但是它似乎没有用。代码就是这样,除了MYSQL登录外,没有什么额外的。 PHP抢: 原始的PHP代码是相同的,包含在div中,其id属性为’ajax_table’。 JavaScript是: 那是在请求另一个php页面的页面上。 问题答案: 如何使用类似jQue

  • 问题内容: 如何选择多个表并从同一列联接多个行? 它不会返回,并且。我确定此SQL代码段的语法错误。 更新: 显示。移除后 它返回: 但我需要退货: 问题答案: 您可以多次连接到同一张表,而只需提供不同的别名