How Do I Join A Table To Itself Recursively ?
Feb 12, 2001
Hi !
I have an EMPLOYEE table as below.
Table - EMPLOYEE
Id (Int) (P)
EmployeeName Varchar(30)
Parent_Id (Int) (Reference to EMPLOYEE.Id)
I want to retrieve all the Employees of any given Manager.
For eg: Given a CEO, I want to retrieve all the Managers and Sub Managers and Sub Sub Managers ... under it.
This is a typical example of a Self join Table. How can I do that.
Can anyone help ??
Regards.
View 3 Replies
ADVERTISEMENT
Jun 28, 2007
Hi,
I'm building an application where items are part of hierarchical "chain" consisting of chain segments.
Here are the relevant tables.
Chains:
Id (int)
UserId (Guid)
ChainSegments:
Id (int)
ChainId (int - foreign key to Chains table)
ParentId (int - foreign key to Id column in same table)
UserId (Guid)
There are more columns in ChainSegments but they are not relevant in this context.
You can see here that ChainSegments belong to Chains and ChainSegments can have other ChainSegments as children.
I'm trying to write a recursive Sql query that finds a ChainSegment for a given ChainId and recursively selects its "child" ChainSegments for a given number of iterations. Hope this is making sense so far :-)
Here's what I've got:
GO
WITH ChainSegmentTree (Id, ParentId, Level)
AS
(
-- Anchor member definition
SELECT a.Id, a.ParentId,
0 AS Level
FROM ChainSegments AS a
INNER JOIN ChainSegments AS b
ON a.Id = b.ParentId
WHERE a.ParentId IS NULL
UNION ALL
-- Recursive member definition
SELECT a.Id, a.ParentId,
Level + 1
FROM ChainSegments AS a
INNER JOIN ChainSegments AS b
ON a.Id = b.ParentId
INNER JOIN ChainSegmentTree AS c
ON a.Id = c.ParentId
)
-- Statement that executes the CTE
SELECT e.Id, e.ParentId, Level
FROM ChainSegmentTree AS e
INNER JOIN ChainSegments AS f
ON e.Id = f.Id
WHERE Level = 0;
GO
I've based this on an example I found here:
http://technet.microsoft.com/en-us/library/ms186243.aspx
Unfortunately this only returns one row, the "root" ChainSegment (ParentId = null) and nothing else.
I'm admittedly rubbish at Sql and would really appreciate any help that could be offered here.
Many thanks,
Ed
View 7 Replies
View Related
May 19, 2006
I have a Table that contains Items of the Type "Step". The primary keyis "StepID". Each step can have have a target step, wich represents asubsequent step. So I have a Foreign key relationship within the sametable:Primary Key: StepID --> Foreign Key: TargetStepIDNow if I want to insert a group of new Steps into the table, I can onlyinsert steps whose target step is already insterted to the table. Howwould I solve this problem ? Do I need to write my own client side (Iam using ADO.NET / C#) that loops through the targetsteps and insertsthe targetsteps first ? Or is there a more celver way to do this ?
View 4 Replies
View Related
Oct 18, 2005
I have found the Common Table Expressions described in SQL 2005 and Iam not sure if it applies to this situation.Here are the tables<PRE><B>ManagedServer Table</B>--IdManagedServer (PK, int, not Null)--Name (nvarchar(256), not null)<B>ManagedServerToManagedServer Table</B>--IdParentManagedServer (PK, int, not null)--IdChildManagedServer (PK, int, not null)</PRE>The following will give you the parent-- Get Managed Server Group NamesLEFT OUTER JOIN ManagedServerToManagedServer mstms ONms.IdManagedServer = mstms.IdChildManagedServerLEFT OUTER JOIN ManagedServer msg ON mstms.IdParentManagedServer =msg.IdManagedServerHow would you go about getting all of the "parents" in the tree?Can this be done with CTEs? Unfortuately all of the examples found arejoining on itself.
View 1 Replies
View Related
Aug 16, 2015
I want to recursively select all records within a hierarchy, using the main parentid and a textvalue on level 1 OR level 2 of the subcategories.
My data:
CREATE TABLE [dbo].[articlegroups](
[id] [int] NOT NULL,
[parentid] [int] NOT NULL,
[catlevel] [tinyint] NOT NULL,
[slug_en] [nvarchar](50) NOT NULL,
CONSTRAINT [PK_globos_articlegroups] PRIMARY KEY CLUSTERED
[Code] ...
When selecting rows I always have the main parentId (so catlevel 0) and the slug_en value.
In my example case I have id 129 and slug_en='cradles'.
I want my query to then return:
idparentidcatlevel
12900
1301291
1361302If I have id 129 and slug_en='pillows'.
I want my query to then return:
idparentidcatlevel
12900
1391291
How can I do this? I'm new to SQL Server. I was reading here [URL] .... on recursive SQL, but how to implement this as I just have one table and I also have 2 selection criteria (main category id and a text value on either level 1 or 2).
View 9 Replies
View Related
Nov 10, 2006
I have a table within a table that contains descriptions of work done as strings. Some of these need to be edited after a report is generated so it needs to be exported to Excel.
As everyone knows Excel can't process a table within a table so I need a way to concatenate all the separate row entries in the nested table to one Field entry so the nested table is no longer necessary.
Is there a way to recursively concatenate strings from the report designer?
The number of rows that need to be concatenated is variable so it has to be flexible.
View 2 Replies
View Related
Jul 20, 2005
Hi all.If my table looks like the followingEMPLID NAME BU SAL ELIG_CONFIG11001 Tom 10 500001002 Sarah 10 490001003 John 20 450001005 Jane 10 67000Now I would like to populate ELIOG_CONFIG with the value that is inBU. How is this done recursively so that Tom's ELIG-CONFIG1 = 10 andJohn's ELIG_CONFIG1 = 20 etc.EMPLID NAME BU SAL ELIG_CONFIG11001 Tom 10 50000 101002 Sarah 10 49000 101003 John 20 45000 201005 Jane 10 67000 10update PS_JOB set ELIG_CONFIG1 = (select BU from PS_JOB where.........)How is this done recursively thorugh the whole table?Does this make sense. Assume for example that EMPLID is KEY.John
View 2 Replies
View Related
Oct 8, 2015
I was writing a query using both left outer join and inner join. And the query was ....
SELECT
S.companyname AS supplier, S.country,P.productid, P.productname, P.unitprice,C.categoryname
FROM
Production.Suppliers AS S LEFT OUTER JOIN
(Production.Products AS P
INNER JOIN Production.Categories AS C
[code]....
However ,the result that i got was correct.But when i did the same query using the left outer join in both the cases
i.e..
SELECT
S.companyname AS supplier, S.country,P.productid, P.productname, P.unitprice,C.categoryname
FROM
Production.Suppliers AS S LEFT OUTER JOIN
(Production.Products AS P
LEFT OUTER JOIN Production.Categories AS C
ON C.categoryid = P.categoryid)
ON
S.supplierid = P.supplierid
WHERE
S.country = N'Japan';
The result i got was same,i.e
supplier country productid productname unitprice categorynameSupplier QOVFD Japan 9 Product AOZBW 97.00 Meat/PoultrySupplier QOVFD Japan 10 Product YHXGE 31.00 SeafoodSupplier QOVFD Japan 74 Product BKAZJ 10.00 ProduceSupplier QWUSF Japan 13 Product POXFU 6.00 SeafoodSupplier QWUSF Japan 14 Product PWCJB 23.25 ProduceSupplier QWUSF Japan 15 Product KSZOI 15.50 CondimentsSupplier XYZ Japan NULL NULL NULL NULLSupplier XYZ Japan NULL NULL NULL NULL
and this time also i got the same result.My question is that is there any specific reason to use inner join when join the third table and not the left outer join.
View 5 Replies
View Related
Apr 14, 2015
I'm having trouble with a multi-table JOIN statement with more than one JOIN statement.
For each order, I need to return the following: CarsID, CarModelName, MakeID, OrderDate, ProductName, Total ordered the Car Category.
The carid (primary key) and carmodelname belong to the Cars table.
The makeid and orderdate belong to the OrderDetails table.
The productname and carcategory belong to the Product table.
The number of rows returned should be the same as the number of rows in OrderDetails.
View 2 Replies
View Related
Dec 1, 2006
I have one control table to store all related table name
Table ID TableName
1 TableA
2 TableB
In Table A:
RecordID Value
1 1
2 2
3 3
In Table B:
RecordID Value
1 1
2 2
3 3
How can I get the result by select the Table list first and then combine the data in table A and table B?
Thank you!
View 1 Replies
View Related
Apr 29, 2014
I have table 'stores' that has 3 columns (storeid, article, doc), I have a second table 'allstores' that has 3 columns(storeid(always 'ALL'), article, doc). The stores table's storeid column will have a stores id, then will have multiple articles, and docs. The 'allstores' table will have 'all' in the store for every article and doc combination. This table is like the master lookup table for all possible article and doc combinations. The 'stores' table will have the actual article and doc per storeid.
What I am wanting to pull is all article, doc combinations that exist in the 'allstores' table, but do not exist in the 'stores' table, per storeid. So if the article/doc combination exists in the 'allstores' table and in the 'stores' table for storeid of 50 does not use that combination, but store 51 does, I want the output of storeid 50, and what combination does not exist for that storeid. I will try this example:
'allstores' 'Stores'
storeid doc article storeid doc article
ALL 0010 001 101 0010 001
ALL 0010 002 101 0010 002
ALL 0011 001 102 0011 002
ALL 0011 002
So I want the query to pull the one from 'allstores' that does not exist in 'stores' which in this case would the 3rd record "ALL 0011 001".
View 7 Replies
View Related
Aug 15, 2015
I am using stored procedure to load gridview but problem is that i am not getting all rows from first table[ Subject] on applying conditions on second table[ Faculty_Subject table] ,as you can see below if i apply condition :-
Faculty_Subject.Class_Id=@Class_Id
Then i don't get all subjects from subject table, how this can be achieved.
Sql Code:-
GO
ALTER Proc [dbo].[SP_Get_Subjects_Faculty_Details]
@Class_Id int
AS BEGIN
[code] ....
View 9 Replies
View Related
Jul 23, 2005
If I join Table1 to Table2 with a WHERE condition, isit the same if I would join Table2 to Table1 consideringthat the size of the tables are different.Let's assume Table2 is much bigger than Table1.I've never used MERGE, HASH JOINs etc, do any ofthese help in this scenario?Thank you
View 3 Replies
View Related
May 1, 2008
Hello I have a Source database and a Target database.
I want to join one table from the source to the other table in the target.
Please can some one write a sql query for this.
i gues its something like
select tablesource.col,tabledest.col
from database..tablesource,database..tabledestination
Ok One more question is where do I execute this Query in which database.. IF at all its possible to this.
View 4 Replies
View Related
Mar 10, 2008
Is it possible to insert data into a table from a temporary table that is inner join?
Can anyone share an example of a stored procedure that can do this?
Thanks,
xyz789
View 2 Replies
View Related
Apr 30, 2008
Hello
Can any one tell me the difference between Cross Join, inner join and outer join in laymans language
by just taking examples of two tables such as Customers and Customer Addresses
Thank You
View 1 Replies
View Related
Nov 5, 2004
Hi there. I haven't been able to figure out how to join a table on column on multiple table names. Here's the situation:
I have a table "tblJob" with a key of jobID. Now for every jobID, the program creates a new table that keeps track of the stock before the jobId was processed and after it was processed to give accurate stock levels and show the difference in stock levels. So, a jobID of 355 would be related to the table: "tblPreStock_335" and "tblPostStock_335". These 2 tables have all the materials in stock and the quantity. Therefore they show how much material was used. I need to figure out the difference in the material in the stock before and after the processing.
That means that I have to get a stockID, get the associated pre and post tables, and then display the difference of ALL the materials in the pre and post tables.
Could someone help me get started on the right path? Even a link to similiar problem that I haven't found would be nice.
Thx
View 12 Replies
View Related
Feb 24, 2006
I have one main Table "MainTable" which I want to relate with "subTable1, subTable2, ..." in such a way that:
"ith subTable" have to be related/joind on "ith row" of the "MainTable", "jth subTable" have to be related/joined on "jth row" of the "MainTable" and so on...
What I want Actually?
I want that when ever I delete a Record in the "MainTable", The corresponding "subTable" have to be deleted Itself.
I thought a solution that, I can cerate a Trigger on Delete of the "MainTable" and it would delete the corresponding "subTable". But I dont know how to ceate that.
Secound solution what I thought is, that may be there is some majic power in the Table Joinings. That I might join "MainTable" row with "subTable" ( ofcourse that I dont know either :))
So my question is, that what is the actual solution for my problem?
What ever solution is please give me a sample also with that. Like in a Trigger how can I write some Expression which can delete the "subTable" for the Currunt delete Row.
Regards,
Omer Kamal
View 3 Replies
View Related
Mar 13, 2008
Here's my issue. I've got a series of tables like so:
dbo.CustomerBobJones
dbo.CustomerJaneDoe
dbo.CustomerBrianSmith
Each contains these columns:
DateOfComment datetime
CommentText varchar(200)
Now all other customer information is stored in another table dbo.CustomerList
CustomerID int
CustomerName varchar(50)
Address varchar(50)
and so on.
I need to join from this customer list to the individual tables for those customers.
My thought was to add to dbo.CustomerList the name of the table associated to that account... but I'm not sure once that information is entered how I'll be able to join between them.
I had thought that the id in sysobjects might be the key but I'm not sure how to join using an id instead of a table name.
Can anyone throw me a bone on this?
View 9 Replies
View Related
Feb 5, 2007
I have two tables:
Orders, with OrderID as primary key, a code for the client, and a code for the place of delivery/receipant.
Both the client and place of delivery should be linked to the table:
Relations, where each relation has it's own PrimaryID which is a auto-numbered ID. Now I want to substract my orders, with both the clientcode, and the place of delivery code linked to the relations table, so that for both the name and adress is shown.
I can link one of them by:
InnerJoin On Orders.ClientID = Relations.ClientID, but it's not possible to also link to the ReceipantsID. Is there a way to solve this?
View 7 Replies
View Related
Feb 19, 2004
I am attempting to join 2 table variables on 2 keys, employeeID and employerID
SELECT * FROM @employees
INNER JOIN @addresses
ON ((@employees.employeeID = @addresses.employeeID) AND (@employees.employerID = @addresses.employerID))
Both tables are declared with proper fields and they are populated with the correct data; I get this error msg upon execution.
Server: Msg 137, Level 15, State 2, Line 28
Must declare the variable '@employees'.
Any ideas on what's going wrong?
View 2 Replies
View Related
Nov 8, 2003
All,
I have two tables, A and B.
Table A has names, address, phone.
Table B has names and image filename.
Table A and B can be linked by names.
I would like to show all the names in Table A and link to Table B such that it will show a column image filename if there is a image filename. If the name cannot be found in the Table B display a NULL on the column.
(Note : there may be two same names in the Table B, so how can i show only the first image filename).
Kindly advise.
thanks.
View 5 Replies
View Related
Jan 10, 2006
Hi All,
Im trying to write a SQL statement that will join 2 tables based on a customer has 2 specific products.
eg.
Table 1: Customer
MemberID
MemberName
Email ect
Table 2: Products
ProductID
MID (MemberID of table 1)
ProductName
So how do i write a sql statement to only bring up say cutomers that have a ProductName of "Computers" AND "Laptops" They must have both Computers as an entry in the products table and an entry of Laptops in the relational database.
Your help would be much appreciated.
Tim
View 3 Replies
View Related
Mar 1, 2006
I am trying to join 5 tables in a sql server 2k db. Does anyone know of a good set of guidelines for doing this? Alternately, could someone find the problem in the following query?
The query that I am using is listed here (please let me know if I am violating any programming guidelines on this):
SELECT p.ParticipantID, pr.Age, ir.FnlTime, e.EventDate
FROM Participant p INNER JOIN PartRace pr ON p.ParticipantID = pr.ParticipantID
JOIN IndResults ir ON pr.ParticipantID = ir.ParticipantID
JOIN RaceData rd ON ir.RaceID = rd.RaceID
JOIN Events e ON e.EventID = rd.EventID
WHERE rd.Dist = '5_km' AND p.Gender = 'm' AND ir.FnlTime <> '00:00' AND e.EventGrp = 1
ORDER BY ir.ParticipantID
The problem that I am having is that if a participant shows up multiple times (which they could do since this is designed to get the performances for an event over a series of years) it does not associate the correct data from year to year. Basically some times show up where they shouldn't.
View 10 Replies
View Related
Sep 29, 2014
For example... say i have this query:
Code:
select
table1.indicator
table2.name
table2.lastname
left join table2
on table1.client_name = table2.lastname
where table1.indicator = '1952423'
But I also have found out that "requestors" are also stored inside table2...
I cant do another join table2 on table1.requestor_name = table2.lastname
I am not sure what the correct way of doing it is, I think I can use IN() but I am not so sure...
View 7 Replies
View Related
Feb 27, 2015
I have a company table at below.
HTML Code:
comid companyname parentcompany maincom
------- ----------- --------------
1 test 0 1
2 testxx 1 0
So here the second record i have parent company = 1 meaning company test as parent for textxx , if a company has parentcompany as 0 means tat has no parent company.
So in this i need have a result to display in grid is
HTML Code:
companyname parentcompany
test no
testxx test
I tired with inner join , but it is only select the second record as it's skip the first record due inner join with comid .
View 2 Replies
View Related
Apr 23, 2008
how to join a table to itself to get all possible compinations
using join
consider
select tab1.col col1,tab2.col col2
from tab tab1,tab tab2
i want to make the same thing using join
View 8 Replies
View Related
Jun 12, 2008
i have 2 table patient & PatientServiced and i want to join both the table the common field is id(patient) & patient_id(patientservices) so what will be the sql query for it?
SELECT [id], [firstName], [lastName], [middleName], [streetAddress], [city], [state], [zip], [phone], [gender], [dob], [age], [serviceDate], [clinic_id], [entryDate], [emailAddress], [enteredBy], [importId] FROM [FCID_2].[dbo].[Patient]
SELECT [id], [patient_id], [value], [topNumber], [bottomNumber], [patientService_id], [patientPaid], [insuranceAmtRequested], [insuranceAmtPaid], [insuranceBalance], [totalPaid], [batchID], [status], [dateSent], [datePaid], [dateDeclined], [declinedReason], [correctionNote], [dateEntered], [enteredBy], [insuranceProvider_id], [insuredMemberID], [insuredGroupID], [insuredFirstName], [insuredLastName], [insuredRelationship], [adjustedReason], [remitDetail], [correctedClaim] FROM [FCID_2].[dbo].[PatientServiced]
View 1 Replies
View Related
Aug 29, 2013
The following code works fine.
But I need to add that we only want part# that have a reporting code that is, are not blank in this table "Audia" ItPRT# would join on the other prt# and then we want this col added to the output: IARCC9
and then we need to sort by that as well.
select ItQty#,IhDocd,ItPRT# from pklib.Fileout1 a
join astdta.icEct1 b on
b.CtCom#= a.ItCom# and
b.CtCtr# = ' ' and
b.CtPrt# =a.ItPrt#
order by a.ItPRT#
View 3 Replies
View Related
Sep 7, 2007
Hi there, anyone can help me to join Table_1 & Table_2 to get below output: Thanks.
Table_1
id, mbb_benefitcategory, mbb_projecttype
5001369, lkp_val_growth, lkp_val_appl
Table_2
id, lookup_type, lookup_code, name
500, mbb_prj_benefitcategory, lkp_val_growth, growth
501, mbb_prj_projecttype, lkp_val_appl, application
Output:
Table_1.id, Table_2.Name as A, Table_2.Name as B
5001369, growth, application
View 2 Replies
View Related
Mar 3, 2008
I want to select a few fields from table Detail, and then one field from the table Ink, but when i do this the sql server says: Ambiguous column name 'inkModel'. Can anyone help me out?
SELECT userDeptName, userDeptCategory, inkModel, quantity, dateOfTheRequest, AprovedBy FROM Detail
INNER JOIN Ink
ON
Detail.inkModel = Ink.inkPrice
WHERE
Ink.inkPrice = 1200.00
View 7 Replies
View Related
Apr 22, 2008
I have 5 tables that I need to link with 1 table (All tables have a PolicyCode).
The problem is that I have to link it so that the result tells me what PolicyCodes in the 1 table was matched to either of the other 5 tables.
View 1 Replies
View Related
Feb 9, 2007
I would like to start using SQL Server CE rather than SQLite for an application I am developing, due to it's replication support for SQL Server however there appears to be a gaping hole in it that means I can't even consider it. Specifically to do with aggregates against detail tables.
Is there any way to do the equivalent of the following in SQL using SQL Server CE?
SELECT [Customer_Id], [Customer_name], COALESCE([OT].[Count_Orders],0) [CountOrders], COALESCE([OT].[Sum_Value],0) [OrderValue] FROM [Customers] LEFT OUTER JOIN (SELECT .[Customer_Id], COUNT(*) [Count_Orders], SUM(.[Order_Value]) [Sum_Value] FROM [Orders] GROUP BY .[Customer_Id]) [OT] ON [OT].[Customer_Id] = [Customers].[Customer_Id]);
Any help would be most welcome
Adrian Heath
View 5 Replies
View Related