Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.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
Mysql使用If条件连接两个表并获得结果_Mysql_Json_Left Join - Fatal编程技术网

Mysql使用If条件连接两个表并获得结果

Mysql使用If条件连接两个表并获得结果,mysql,json,left-join,Mysql,Json,Left Join,在我的应用程序中,用户可以选择多个银行。用户可以选择多家拥有信用卡的银行。银行名单在银行表中。用户选择的银行将插入移动用户银行表。在mobile\u user\u bank表中,列为id、mobile\u user\u id、bank\u id 两张桌子 银行-保存银行列表 移动用户银行-保存用户选择的银行 我想得到一个json对象,该对象给出一个所有银行列表,其中包含一个变量 `{ "id": 2, "bank_name": "HNB", "

在我的应用程序中,用户可以选择多个银行。用户可以选择多家拥有信用卡的银行。银行名单在银行表中。用户选择的银行将插入移动用户银行表。在mobile\u user\u bank表中,列为id、mobile\u user\u id、bank\u id

两张桌子

  • 银行-保存银行列表

  • 移动用户银行-保存用户选择的银行

  • 我想得到一个json对象,该对象给出一个所有银行列表,其中包含一个变量

      `{
            "id": 2,
            "bank_name": "HNB",
            "image": "bank_hnb.png",
            "is_selected": 1
        },
        {
            "id": 3,
            "bank_name": "BOC\n",
            "image": "bank_boc.png",
            "is_selected": 0
        },
        {
            "id": 4,
            "bank_name": "People's Bank",
            "image": "people.png",
            "is_selected": 1
        }`
    
    我尝试了这个查询,但结果是错误的,没有给出所有的银行,只有用户选择的银行在重复

    SELECT ub.id, ub.name, ub.image FROM banks ub left join mobile_user_banks mub on ub.id = mub.bank_id where mub.mobile_user_id =25;
    

    如果条件为,则使用此选项,您的查询几乎已完成-

    SELECT ub.id, ub.name, ub.image, if (mub.bank_id is null, 0 , 1) as is_selected
    FROM banks ub 
    left join mobile_user_banks mub on ub.id = mub.bank_id 
    and mub.mobile_user_id = 25 ;
    

    不能给出左表结果。只有我得到了内部连接结果,这意味着如果我添加为左连接,但结果只有用户添加了银行。在我的表中有20个银行,用户只选择了4个,对于上面的查询,它只输出4个银行。@user2552863我已经更新了我的答案,可能是您正在使用带where的用户筛选器,而您必须使用带on的用户筛选器。更新答案见。