MySQL Left/Right/Outer 加入
MySQL Left/Right/Outer Join
我只想显示 supplier_address 的 active 用户。下面是系统的数据库。
Illustration of my db
就像我上面提到的,我只想显示 supplier_address 的 active 供应商。上面提供的图像显示 A - supplier_address table 和 B - status_login table 包含 "active" 元素。
现在,我的代码是这样的,
$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();
我不知道如何才能不依赖临时 table。如果你们有什么建议,请在这里推荐。
您还需要加入 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()
`
我只想显示 supplier_address 的 active 用户。下面是系统的数据库。
Illustration of my db
就像我上面提到的,我只想显示 supplier_address 的 active 供应商。上面提供的图像显示 A - supplier_address table 和 B - status_login table 包含 "active" 元素。
现在,我的代码是这样的,
$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();
我不知道如何才能不依赖临时 table。如果你们有什么建议,请在这里推荐。
您还需要加入 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()
`