【发布时间】:2018-12-25 16:14:59
【问题描述】:
我需要在已连接的表上连接一个表,因为我需要的另一个表中的数据也分布在另一个表中。到目前为止,这是我的 SQL 模型:
现在我还需要加入地址表和加入的子表,因为我还需要每个孩子的地址。我唯一的问题是,如何根据 childs.address_id 加入表地址?
我已经尝试过了:
INNER JOIN `addresses` AS `addresse_child` ON `childs`.`address_id` = `addresses`.`id`
很遗憾没有工作..
到目前为止我的 SQL 查询 (DB::getQueryLog())
SELECT `assignments`.`id` AS `assignment_id`,
`assignments`.`persons` AS `assignment_persons`,
`assignments`.`start_date` AS `assignment_start_date`,
`assignments`.`end_date` AS `assignment_end_date`,
`addresses`.`id` AS `address_id`,
`addresses`.`first_name` AS `address_first_name`,
`addresses`.`last_name` AS `address_last_name`,
`addresses`.`company` AS `address_company`,
`childs`.`id` AS `child_id`,
`childs`.`address_id` AS `child_address_id`,
`childs`.`sibling_id` AS `child_sibling_id`,
`childs`.`height` AS `child_height`,
`childs`.`weight` AS `child_weight`
FROM `assignments`
INNER JOIN `addresses` ON `assignments`.`address_id` = `addresses`.`id`
INNER JOIN `childs` ON `assignments`.`id` = `childs`.`assignment_id`
WHERE `assignments`.`deleted_at` IS NULL
AND `addresses`.`deleted_at` IS NULL
AND `childs`.`deleted_at` IS NULL
我的 Laravel SQL 命令:
$assignment_data = DB::table('assignments')
->join('addresses', 'assignments.address_id', '=', 'addresses.id')
->join('childs', 'assignments.id', '=', 'childs.assignment_id')
->select(
'assignments.id as assignment_id',
'assignments.persons as assignment_persons',
'assignments.start_date as assignment_start_date',
'assignments.end_date as assignment_end_date',
'addresses.id as address_id',
'addresses.first_name as address_first_name',
'addresses.last_name as address_last_name',
'addresses.company as address_company',
'childs.id as child_id',
'childs.address_id as child_address_id',
'childs.sibling_id as child_sibling_id',
'childs.height as child_height',
'childs.weight as child_weight'
)
->whereNull('assignments.deleted_at')
->whereNull('addresses.deleted_at')
->whereNull('childs.deleted_at')
->get();
【问题讨论】: