简体   繁体   English

如何在SQL中创建大查询

[英]How to create big query in SQL

I have 4 tables: 我有4张桌子:

CREATE TABLE workers (
ID_worker    INTEGER PRIMARY KEY AUTOINCREMENT,
name_worker INTEGER UNIQUE);

CREATE TABLE equip (
ID_equip     INTEGER PRIMARY KEY AUTOINCREMENT,
name_equip TEXT);

CREATE TABLE models (
ID_model     INTEGER PRIMARY KEY AUTOINCREMENT,
ID_equip1        INTEGER REFERENCES equip (ID_equip),
name_model TEXT);

CREATE TABLE work(
ID_worker1    INTEGER REFERENCES workers (ID_worker),
ID_model1 INTEGER REFERENCES models (ID_model) );

And I want to create query, for example: ID_worker / name_worker / ID_model / ID_model where in first "ID_model" appear models where ID_equip1=1 and in second "ID_model" - ID_equip1=2 我想创建查询,例如:ID_worker / name_worker / ID_model / ID_model其中第一个“ ID_model”出现模型,其中ID_equip1 = 1,第二个“ ID_model”-ID_equip1 = 2

Sample Data 样本数据

 Table workers
 /ID_worker/name_worker/
 /1        /Andrew     /
 /2        /Max        /
Table equip
/ID_equip/name_equip/
/1       /equip1    /
/2       /equip2    /
Table models
/ID_model/ID_equip1/name_model/
/1       /1        /BH-1      /
/2       /1        /BH-2      /
/3       /2        /CH-1      /
/4       /2        /CH-2      /
Table work
/ID_worker1/ID_model1/
/1         /1        /
/1         /4        /
/2         /2        /
/2         /3        /

I want that result 我想要那个结果

/ID_worker/name_worker/ID_model/ID_model/
/1        /Andrew     /1       /4       /
/2        /Max        /2       /3       /

Try this - 尝试这个 -

SELECT WS.ID_worker, WS.name_worker, MIN(W.ID_model1), MAX(W.ID_model1)
FROM workers WS
INNER JOIN work W ON WS.ID_worker = W.ID_worker1
GROUP BY WS.ID_worker, WS.name_worker

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM