在下面的示例中,我正在考虑这一点,teachers
并且courses
存在多对多关系:教师可以教授多门课程,而课程可以由多位教师教授。
from openerp.osv import orm, fields
class Teachers(orm.Model):
_name = 'teachers'
name = fields.Char()
class Course(rm.Model):
_name = 'course'
title = fields.Char()
teacher_ids = fields.Many2many('teachers', 'teacher_course_rel', 'course_id',
'teacher_id', string='Teachers')
使用 SQL(使用Odoo API或您的 DBMS),您可以查询联结表(或交叉引用表)teacher_course_rel
以从每个表中检索所需的列。
例如,下面的查询检索所有教授物理课程的教师姓名:
SELECT c.title, t.name
FROM teacher AS t
INNER JOIN teacher_course_rel AS tcr
ON t.id = tcr.teacher_id
INNER JOIN course AS c
ON tcr.course_id = c.id
WHERE c.title = 'Physics'
请注意,我使用的 SQL仅在满足条件(即两个条件和条件)INNER JOIN
时才从两个表中返回行。出于您的目的,您可能希望使用不同类型的连接,具体取决于您希望从两个表中检索的信息。INNER JOIN
WHERE