Sponsored Content
Top Forums Programming Hierarchical Query for Sybase database Post 302976181 by durden_tyler on Friday 24th of June 2016 06:41:13 PM
Old 06-24-2016
Quote:
Originally Posted by Perlbaby
...
The WITH or WITH RECURSIVE does not work with Sybase ASE
Looks like this is only supported by Sybase SQL Anywhere, not by the "professional" Adaptive Server Enterprise .
It showing incorrect syntax near the keyword both "With and With recursive option "
Too bad Sybase does not support that syntax, since it is part of ANSI standard.
If, however, you have a procedural language in Sybase then you should be able to implement the pure SQL query into the procedural language.

Procedural languages in a database are the ones that allow you to have programming constructs like loops (for, while, do..until etc.) or branches (if...then). Examples of procedural languages are PL/SQL in Oracle, PL/pgSQL in PostgreSQL. You can write procedures/functions in procedural languages. Not sure if Sybase has procedural language built in it.

An explanation of the SQL query follows:
- The "seed query" fetches only the records that have "NULL" for the "emp_mgr". These are the records at the top of the hierarchies. In my sample data, there is only one such record (Adam). It's the root node and its level is set to 1.

- The "recursive query" then fetches the immediate children of the root node by joining it back to the "emp" table. So, for "Adam", we fetch records that have "Adam" as emp_mgr. That would be "Brian" and "Chuck". They are at level 1+1 = 2. Now our "hier_tree" has only two records - Brian and Chuck.

- The "recursive query" part of "hier_tree" is run again now. This time, it is joined with "emp" table again to find the immediate child nodes of (Brian, Chuck). That would be (Dan, Eric, Fred). Their level is 2+1 = 3. Now our "hier_tree" has three records (Dan, Eric, Fred).

- The "recursive query" part of "hier_tree" is run again now. This time, it is joined with "emp" table again to find the immediate child nodes of (Dan, Eric, Fred). So we get (Greg). His level is 3+1 = 4. Now our "hier_tree" has only one record (Greg).

- The "recursive query" part of "hier_tree" is run again now. It is joined with "emp" table to find the immediate child nodes of (Greg). This query returns no records, because there are no records in "emp" that has Greg as the manager. So, the execution of "hier_tree" is terminated. This is our exit condition - the "recursive query" part returning 0 records.

As you probably know, every recursive function must: (a) have an exit condition and (b) move nearer and nearer to the exit condition in each recursive call. That's exactly what is happening in the SQL query.

(I don't know how or why SQL Server shows the output as depth-first and not breadth-first traversal. In Oracle, I can specify the type of traversal.)

You could probably use temporary tables to store the intermediate results that are in "hier_tree" in the example. Hope that helps.
This User Gave Thanks to durden_tyler For This Post:
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Connect to sybase database using Korn shell script

Hi, Can anyone please give me a script or let me know how to connect to a sybase database and execute a query using Korn shell scripts.Am new to Unix but i need to do this ASAP. Please help. Thanks, Gops (7 Replies)
Discussion started by: bhgopi
7 Replies

2. Shell Programming and Scripting

Dynamic update loop query on Sybase database

Hello Guys, I'm new to Shell scripting, and i need someone to help me with this issue: I'm trying to do a dynamic update query on Sysbase database table using shell script. Lets say, the Update query is "update Table set id=X" , where X is dynamic value for the loop index. If the loop is... (10 Replies)
Discussion started by: Alaeddin
10 Replies

3. Shell Programming and Scripting

Print out loop index on the console after executing each sybase DB query

Hello Guys, Well, using shell script, I'm doing loop on DB query as below: isql -Usa -Ptest -I /opt/sybase/interfaces << EOF use testdb go declare @i int select @i = 1 while(@i <= 5) begin Insert into TEST values (@i,"Test","TestDesc") select @i = @i + 1 end go EOF The Issue... (2 Replies)
Discussion started by: Alaeddin
2 Replies

4. Shell Programming and Scripting

Database Query

Hi, Am using informix database. When i give "isqlrf <database name> - " from the command prompt , i get connected to the database and i can run sql queries.. I am moving to freeBSD and when i give the same command at the prompt i get an error : Index already exists on column Why is this... (0 Replies)
Discussion started by: jisha
0 Replies

5. Programming

Need help with complex SQL query (Sybase)

Hello, I have three tables. I need an SQL query (preferably Sybase) that will return all of the stringID values of table B where the following conditions exist: (1) B.intID = A.intID (2) B.intID != C.intID or (B.intID = C.intID and (C.v1 = 0 or C.v2... (2 Replies)
Discussion started by: chatieremerrill
2 Replies

6. Windows & DOS: Issues & Discussions

how to connect to sybase database?

hi, I'd like to connect to a Sybase ASE 12 through a a graphic user interface (GUI) that run on windows and solaris10, because i need to do some querys. The database is running on solaris 10. I'm not an expert using databases, but i know how to use some SQL commands through command line... (3 Replies)
Discussion started by: danin
3 Replies

7. Shell Programming and Scripting

Execute stored procedure through script in sybase database and store the output in a .csv file

Hi, I have a sybase stored procedure which takes two input parameters (start_date and end_date) and when it get executed, it gives few records as an output. I want to write a unix script (ksh) which login to the sybase database, then execute this stored procedure (takes the input parameter as... (8 Replies)
Discussion started by: amit.mathur08
8 Replies

8. Programming

Sybase ASE: Query to find correct format issue.

Hi Team , I am new to Sybase Adaptive Server Enterprise/15.7 (ASE) and need some guidance to find the different values in serial format column. SELECT DISTINCT SERIAL_FORMAT FROM PRODUCTS It has values with below format which contains 12 digits hexadecimal characters with... (2 Replies)
Discussion started by: Perlbaby
2 Replies

9. Programming

Sybase ASE - Query Tuning - Need Suggestion

Dear Team Please provide suggestion on below query which is used in Sybase Adaptive Server Enterprise/15.7 (ASE). Query takes more time > 30 Mins to 1 Hr All required indexes are built Can we have any efficient approach to get the data retrieval faster for below query.Any help... (0 Replies)
Discussion started by: Perlbaby
0 Replies
All times are GMT -4. The time now is 01:53 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy