3

我有这个数据库结构

CREATE TABLE man (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT
);


CREATE TABLE work (
    work_id INTEGER PRIMARY KEY,
);

CREATE TABLE manWork {
    man_id INTEGER,
    work_id INTEGER,
    FOREIGN KEY(man_id) REFERENCES man(id),
    FOREIGN KEY(work_id) REFERENCES work(work_id)
};

如果我想获取所有男性的列表以及每个男性的所有与该男性相关的工作,那么 SELECT 将如何查询?

4

2 回答 2

2
SELECT
    m.name
    , w.*
FROM
    man m
         INNER JOIN manWork mw ON m.id = mw.man_id
         INNER JOIN work w ON mw.work_id = w.work_id

从您的问题中不确定,但如果您想要所有男性,无论他们在 manWork 表中是否有记录,然后使用 LEFT JOIN 而不是 INNER JOIN。

于 2012-12-19T11:19:39.017 回答
1

JOIN表格:

SELECT
  m.name,
  w.*
FROM manwork mw
INNER JOIN work w ON mw.work_id = w.work_id
INNER JOIN man  m ON mw.man_id  = m.id
于 2012-12-19T11:18:26.860 回答