Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запросы SQL в связанных таблицах  [new]
overload
Member

Откуда:
Сообщений: 1
Есть такая база как на картинке. Не могу написать запрос для нахождения фамилии сортировщика в ТПЦ 2 с наименьшим окладом.

Мысли были следующие, но идут ошибки, буду благодарен если подскажите где не прав
select orgs."Org ID",
 (select post."Post ID",
  (select users."userid",
   (select emps."userid",
   from emps where emps.OKLAD = min(OKLAD) AS Smallest)
  from users where users."Post ID" = 5)
 from post where post."Org ID" = 3 and post."Post Name" = Сортировщик)
from orgs where orgs."Org Name" = ТПЦ 2;


Скрипт базы:
+
--SQLite Maestro 12.1.0.1
------------------------------------------
--Host     : localhost
--Database : test2
 
 
CREATE TABLE Emps (
  "Emps ID"  integer PRIMARY KEY NOT NULL,
  USERID     integer NOT NULL,
  OKLAD      integer,
  /* Foreign keys */
  FOREIGN KEY (USERID)
    REFERENCES Users(USERID)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
);
 
CREATE TABLE Post (
  "Post ID"    integer PRIMARY KEY NOT NULL,
  "Post Name"  char(100),
  "Org ID"     integer,
  /* Foreign keys */
  FOREIGN KEY ("Org ID")
    REFERENCES orgs("Org ID")
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
);
 
CREATE TABLE Users (
  USERID     integer PRIMARY KEY NOT NULL,
  FIO        char(50),
  "Post ID"  integer,
  /* Foreign keys */
  FOREIGN KEY ("Post ID")
    REFERENCES Post("Post ID")
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
);
 
CREATE TABLE orgs (
  "Org ID"    integer PRIMARY KEY NOT NULL,
  "Org Name"  char(100),
  PID         integer
);
 
/* Data for table Emps */
INSERT INTO Emps ("Emps ID", USERID, OKLAD) VALUES (1, 1, 100);
INSERT INTO Emps ("Emps ID", USERID, OKLAD) VALUES (2, 7, 110);
INSERT INTO Emps ("Emps ID", USERID, OKLAD) VALUES (3, 3, 300);
INSERT INTO Emps ("Emps ID", USERID, OKLAD) VALUES (4, 8, 850);
INSERT INTO Emps ("Emps ID", USERID, OKLAD) VALUES (5, 9, 500);
INSERT INTO Emps ("Emps ID", USERID, OKLAD) VALUES (6, 6, 130);
INSERT INTO Emps ("Emps ID", USERID, OKLAD) VALUES (7, 2, 400);
INSERT INTO Emps ("Emps ID", USERID, OKLAD) VALUES (8, 4, 700);
INSERT INTO Emps ("Emps ID", USERID, OKLAD) VALUES (9, 5, 700);
 
 
 
/* Data for table Post */
INSERT INTO Post ("Post ID", "Post Name", "Org ID") VALUES (1, 'Стропальщик', 3);
INSERT INTO Post ("Post ID", "Post Name", "Org ID") VALUES (2, 'Старший мастер', 2);
INSERT INTO Post ("Post ID", "Post Name", "Org ID") VALUES (3, 'Сортировщик', 2);
INSERT INTO Post ("Post ID", "Post Name", "Org ID") VALUES (4, 'Мастер', 3);
INSERT INTO Post ("Post ID", "Post Name", "Org ID") VALUES (5, 'Сортировщик', 3);
INSERT INTO Post ("Post ID", "Post Name", "Org ID") VALUES (6, 'Мастер', 5);
 
 
 
/* Data for table Users */
INSERT INTO Users (USERID, FIO, "Post ID") VALUES (1, 'Петров', 1);
INSERT INTO Users (USERID, FIO, "Post ID") VALUES (2, 'Сидоров', 1);
INSERT INTO Users (USERID, FIO, "Post ID") VALUES (3, 'Иванов', 3);
INSERT INTO Users (USERID, FIO, "Post ID") VALUES (4, 'Кулемин', 5);
INSERT INTO Users (USERID, FIO, "Post ID") VALUES (5, 'Сирко', 5);
INSERT INTO Users (USERID, FIO, "Post ID") VALUES (6, 'Петлюра', 3);
INSERT INTO Users (USERID, FIO, "Post ID") VALUES (7, 'Злой', 3);
INSERT INTO Users (USERID, FIO, "Post ID") VALUES (8, 'Мух', 5);
INSERT INTO Users (USERID, FIO, "Post ID") VALUES (9, 'Чек', 1);
 
 
 
/* Data for table orgs */
INSERT INTO orgs ("Org ID", "Org Name", PID) VALUES (1, 'НИКО ТЬЮБ', 0);
INSERT INTO orgs ("Org ID", "Org Name", PID) VALUES (2, 'ТПЦ', 1);
INSERT INTO orgs ("Org ID", "Org Name", PID) VALUES (3, 'ТПЦ 2', 1);
INSERT INTO orgs ("Org ID", "Org Name", PID) VALUES (4, 'ТПЦ 7', 2);
INSERT INTO orgs ("Org ID", "Org Name", PID) VALUES (5, 'ТПЦ 6', 2);
INSERT INTO orgs ("Org ID", "Org Name", PID) VALUES (6, 'Обсадный участок', 5);


К сообщению приложен файл. Размер - 40Kb
22 июл 15, 12:52    [17920903]     Ответить | Цитировать Сообщить модератору
 Re: Запросы SQL в связанных таблицах  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
SELECT TOP(1) WITH TIES U.FIO
FROM Users U
JOIN Post P ON U.PostID=P.PostID
JOIN ORG O ON P.OrgID=O.OrgID
JOIN Emps E ON U.USERID=E.USERID
WHERE P.PostName='Стропальщик'
  AND O.OrgName='ТПЦ 2'
ORDER BY E.OKLAD;
22 июл 15, 13:00    [17920960]     Ответить | Цитировать Сообщить модератору
 Re: Запросы SQL в связанных таблицах  [new]
iap
Member

Откуда: Москва
Сообщений: 46999
iap
SELECT TOP(1) WITH TIES U.FIO
FROM Users U
JOIN Post P ON U.PostID=P.PostID
JOIN ORG O ON P.OrgID=O.OrgID
JOIN Emps E ON U.USERID=E.USERID
WHERE P.PostName='Стропальщик'
  AND O.OrgName='ТПЦ 2'
ORDER BY E.OKLAD;
Можно и оклад показать, естественно
SELECT TOP(1) WITH TIES U.FIO,E.OKLAD
FROM Users U
JOIN Post P ON U.PostID=P.PostID
JOIN ORG O ON P.OrgID=O.OrgID
JOIN Emps E ON U.USERID=E.USERID
WHERE P.PostName='Стропальщик'
  AND O.OrgName='ТПЦ 2'
ORDER BY E.OKLAD;
22 июл 15, 13:02    [17920969]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить