所以我有
在表1中,我有一列$environment
,该列按上述表(表2 |表3 |表4 ...)的编号引用。我想列出表1中的所有车辆,并加入type
中引用的表;但我发现,我发现唯一的困难是获取所有车辆并遍历所有车辆,并从type
中指定的相应表中获取补充数据。
例如:
车辆:
type
汽车(类型1):
id(0)------------type(1)---------------name(dacia)
id(1)------------type(2)---------------name(porsche)
id(2)------------type(2)---------------name(hummer)
id(3)------------type(3)---------------name(kongo)
id(4)------------type(3)---------------name(renault)
卡车(类型2):
id(0)----------vehicleId(0)-------otherInfo(new)
摩托车(类型3):
id(0)----------vehicleId(1)-------otherInfo(used)
id(1)----------vehicleId(2)-------otherInfo(like_new)
查询结果:
id(0)----------vehicleId(3)-------otherInfo(old)
id(1)----------vehicleId(4)-------otherInfo(very_old)
答案 0 :(得分:0)
您可以使用包含车辆类型条件的LEFT JOIN子句,然后使用CONCAT / COALESCE返回(唯一的)匹配值,如下所示:
select
v.id,
v.type,
v.name,
concat(
coalesce( c.otherInfo, ''),
coalesce( t.otherInfo, ''),
coalesce( m.otherInfo, '')
) as otherInfo
from vehicules v
left join cars c on c.vehiculeId = v.id and v.type = 1
left join trucks t on t.vehiculeId = v.id and v.type = 2
left join motocycle m on m.vehiculeId = v.id and v.type = 3
答案 1 :(得分:0)
我认为您需要先阅读以下内容: Associations
这是定义两个模型/表之间的关系的方式,例如
- 属于
- 多对多
- 有一个
- 有很多
完成此操作后,便可以查询模型以获取期望的真实数据。例子
// Find all projects with a least one task where task.state === project.state
Project.findAll({
include: [{
model: Task
// you can go nested too , as per your requirment
}]
})
这是使用sequelize.js时应该做的事情