MySQL 左/右/外连接

标签 mysql yii2-model

我只想显示活跃用户的supplier_address。下面是系统的数据库。

Illustration of my db

正如我上面提到的,我只想显示活跃供应商的supplier_address。上面提供的图像显示了包含“active”元素的A - seller_address 表B - status_login 表

现在,我的编码如下所示,

    $activeSupplier = "Active";

    // fetch data for 'ACTIVE' Supplier Basic Info Table from table (supplier_profile)
    $supplierAddressInfoListTable = SupplierAddress::find()
    ->select(['supplier_address.supplier_addressID AS supplierAddressID', ` 
    'supplier_address.supplier_profile_ID AS supplierID', 'supplier_address.address_one AS supplierAddressone',` 
    'supplier_address.address_two AS supplierAddresstwo', 'supplier_address.postcode AS supplierPostcode',
    'supplier_address.city AS supplierCity', 'status_login.description AS supplierLoginstatus',
    'state.stateID AS supplierStateID', 'state.name AS supplierStatename',
    'country.countryID AS supplierCountryID', 'country.name AS supplierCountryname'])
    ->leftJoin('supplier_profile', 'supplier_profile.supplier_profileID = supplier_address.supplier_profile_ID')
    ->leftJoin('state', 'state.stateID = supplier_address.state_ID')
    ->leftJoin('country', 'country.countryID = supplier_address.country_ID')
    ->where(['=', 'status_login.description', $activeSupplier])
    ->orderBy(['supplier_profile.supplier_profileID' => SORT_ASC])
    ->asArray()
    ->all();

我不知道如何在不依赖临时表的情况下生存。如果大家有什么建议,请在这里推荐。

最佳答案

您还需要加入 login_profile 和 status_login 表。

`

$activeSupplier = "Active";

    // fetch data for 'ACTIVE' Supplier Basic Info Table from table (supplier_profile)
    $supplierAddressInfoListTable = SupplierAddress::find()
    ->select(['supplier_address.supplier_addressID AS supplierAddressID', ` 
    'supplier_address.supplier_profile_ID AS supplierID', 'supplier_address.address_one AS supplierAddressone',` 
    'supplier_address.address_two AS supplierAddresstwo', 'supplier_address.postcode AS supplierPostcode',
    'supplier_address.city AS supplierCity', 'status_login.description AS supplierLoginstatus',
    'state.stateID AS supplierStateID', 'state.name AS supplierStatename',
    'country.countryID AS supplierCountryID', 'country.name AS supplierCountryname'])
    ->leftJoin('supplier_profile', 'supplier_profile.supplier_profileID = 
         supplier_address.supplier_profile_ID')
   ->leftJoin('login_profile', 'supplier_profile.supplier_profileID = 
        login_profile.supplier_profile_ID')
   ->leftJoin('status_login', 'login_profile.status_login_ID = 
          status_login.status_login_ID')
    ->leftJoin('state', 'state.stateID = supplier_address.state_ID')
    ->leftJoin('country', 'country.countryID = supplier_address.country_ID')
    ->where(['=', 'status_login.description', $activeSupplier])
    ->orderBy(['supplier_profile.supplier_profileID' => SORT_ASC])
    ->asArray()
    ->all()

`

关于MySQL 左/右/外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59478512/

相关文章:

mysql - 如何选择具有 2 个部分名称的表(Mysql?

php - 将来自动态循环查询的值存储到单个字段(不是 php 数组)

php - MySQL排序多个时间戳

mysql - 在 Navicat 中重新排列列顺序

php - 模型类的 "save"方法工作时间很长

php - 3个条件+随机顺序+分页(Code Igniter + MySQL)

Yii2 在创建和更新场景中使用不同的表单字段

yii2 - 将 SQL 查询计算出的字段添加到 Yii2 ActiveRecord 模型中

php - 如何在yii2中使用查询数据进行另一个sql查询

Yii2 : how to use deleteAll with two conditions = and NOT IN