Как я могу написать запрос для вывода этого формата в SQLite? - PullRequest
0 голосов
/ 23 марта 2012

Я хотел бы вывести в следующем формате:

e.EE_id e.FNAME e.LNAME SUPer_id s.FNAME s.LNAME
--- --------- -------------- --- ------------- -------------------
1    Ziqiao    Li
2    Charlie   Li     1      Ziqiao   Li
3    George    Pee    2      Charlie  Li
4    Jason     Dee    2      Charlie  Li
5    Petey     Wee    2      Charlie  Li

Из этой созданной таблицы: мне нужно отображать первичный ключ и внешний ключ в одинаковых результатах при отображении значений имени внешнего ключа для основногоключевые имена.

Create table Employees(
ee_id integer,
fname varchar(20),
lname varchar(20),
super_id integer,
Constraint emp_Pk Primary Key (ee_id),
Constraint emp_Fk Foreign Key (super_id) references employees (ee_id)
);

INSERT INTO Employees VALUES(1,'Charlie','Li',null);
INSERT INTO Employees VALUES(2,'Ziqiao','Lee',1);
INSERT INTO Employees VALUES(3,'George','Pee',2);
INSERT INTO Employees VALUES(4,'Jason','Dee',2);
INSERT INTO Employees VALUES(5,'Petey','Wee',2);

Select ee_id, fname, lname, super_id from employees;

  ee_id       fname       lname       super_id
----------  ----------  ----------  ----------
1           Charlie     Li
2           Ziqiao      Lee         1
3           George      Pee         2
4           Jason       Dee         2
5           Petey       Wee         2

Нужно ли создавать вид?

Ответы [ 2 ]

1 голос
/ 23 марта 2012

Вам нужно JOIN:

Select e1.ee_id, e1.fname, e1.lname, e1.super_id, e2.fname AS Super_fname, e2.lname AS Superlname
from employees e1
left join employees e2
ON e1.super_id = e2.ee_id
1 голос
/ 23 марта 2012

Просто присоедините таблицу к себе:

select e1.ee_id       
       e1.fname EmployeeFirstName,
       e1.lname EmployeeLastName,
       e1.super_id,
       e2.fname SuperFirstName,
       e2.lname SuperLastName
from Employees e1
left join Employees e2 on e1.super_id = e2.ee_id

Первое упоминание (e1) получит данные для сотрудника, второе (e2) принесет данные для руководителя.1006 *

LEFT JOIN обеспечит присутствие в результатах сотрудника без руководителя (ee_id = 1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...