在我下面的例子中,我正在考慮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
條件)。出於您的目的,您可能希望使用different type of join,具體取決於您希望從兩張表格中檢索的信息。