Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

Joins

Former Member
0 Likes
1,786

Hi Experts,

I'm trying to retreive the data from the tables with the fields TADIR(name,srcsystem,author),TRDIR(name,subc),TRDIRT(name,text) . For this i used join condition but here in trdir name is not a primary key so i'm getting error.

So how should i retrieve the data from these tables using joins.

Thanks in Advance,

Aadi.

Title edited by: Alvaro Tejada Galindo on May 23, 2008 6:39 PM

16 REPLIES 16
Read only

Former Member
0 Likes
1,752

Hi,

Do inner join using the following fields :

TADIR - OBJ_NAME

TRDIR - NAME

TRDIRT - NAME

Regards,

Navneeth K.

Read only

Former Member
0 Likes
1,752

Hi aditya,

once try with this code

tables : tadir, trdirt .

data: begin of itab occurs 0,

obj_name like tadir-OBJ_NAME,

SUBC like trdir-subc,

SPRSL like trdirt-sprsl,

end of itab.

select tadirobj_name trdirsubc trdirt~sprsl

from tadir

inner join trdir on trdirNAME = tadirobj_name

inner join trdirt on trdirtname = trdirNAME

into table itab

up to 10 rows.

loop at itab.

write 😕 itab-obj_name,

itab-subc,

itab-sprsl.

endloop.

Thanks & Regards,

S.Gangi reddy

Read only

0 Likes
1,752

Hi,

The code i was trying

SELECT name subc author srcsystem devclass FROM

trdir INNER JOIN tadir ON tadirobj_name = trdirname

inner join trdirt on trdirtname = trdirNAME

INTO TABLE int_cust_program WHERE name IN s_prog AND

object = 'PROG' AND

author IN s_author AND

srcsystem IN s_srcsys AND

devclass IN s_packag AND

( subc = '1' OR subc = 'M' OR subc = 'F' OR subc = 'S' OR subc = 'J'

or subc = 'K' OR subc = 'T' OR subc = 'X' or subc = 'I') "Changed by Aditya

AND

(

name LIKE 'Y%' OR

name LIKE 'Z%' OR

name LIKE 'LY%' OR

name LIKE 'LZ%'

).

Read only

0 Likes
1,752

Hi,

Sorry this is was the code.

SELECT name text subc author srcsystem devclass FROM

trdir INNER JOIN tadir ON tadirobj_name = trdirname

inner join trdirt on trdirtname = trdirNAME

INTO TABLE int_cust_program WHERE name IN s_prog AND

object = 'PROG' AND

author IN s_author AND

srcsystem IN s_srcsys AND

devclass IN s_packag AND

( subc = '1' OR subc = 'M' OR subc = 'F' OR subc = 'S' OR subc = 'J'

or subc = 'K' OR subc = 'T' OR subc = 'X' or subc = 'I') "Changed by Aditya

AND

(

name LIKE 'Y%' OR

name LIKE 'Z%' OR

name LIKE 'LY%' OR

name LIKE 'LZ%'

).

Read only

0 Likes
1,752

Hi,

By using this i'm getting error as "The Name has two meanings.

Please can any one solve my problem.

Read only

0 Likes
1,752

Hi Aditya,

select table1column1 table1column2

from table1

inner join table2 on table2column1 = table1column1

where table1~column1 = 'abcd'.

You are getting errors because the 2 tables the same column name.

Hope this helps.

Benedict

Read only

0 Likes
1,752

Hi,

Thanks for help but how should i join all the 3 tables.

You are showing with 2 tables but is that possible to join these 3 tables.

Please let me know as soon as possible.

Thanks in Advance,

Aadi.

Read only

0 Likes
1,752

Hi,

You can join

TADIR-OBJ_NAME with

TRDIR-NAME with

TRDIRT-NAME

all of them has language fields too...

For the table TADIR, i think the PGMID is always "R3TR"

OBJECT is "PROG"

Hope this helps.

Benedict

Read only

0 Likes
1,752

Hi,

Please refer this join statement.It was giving an error as their are 2 name statement used. Please help me as soon as possible.

SELECT name text subc author srcsystem devclass FROM

trdir INNER JOIN tadir ON tadirobj_name = trdirname

inner join trdirt on trdirtname = trdirNAME

INTO TABLE int_cust_program WHERE name IN s_prog AND

object = 'PROG' AND

author IN s_author AND

srcsystem IN s_srcsys AND

devclass IN s_packag AND

( subc = '1' OR subc = 'M' OR subc = 'F' OR subc = 'S' OR subc = 'J'

or subc = 'K' OR subc = 'T' OR subc = 'X' or subc = 'I') "Changed by Aditya

AND

(

name LIKE 'Y%' OR

name LIKE 'Z%' OR

name LIKE 'LY%' OR

name LIKE 'LZ%'

).

Read only

0 Likes
1,752

Hi,

Refer to my first post

Select table1~name table2~object

from....

That should solve your problem...

Benedict

Read only

Former Member
0 Likes
1,752

This is an example code of joining 3 table.

Follow the same for your tables.

DATA: BEGIN OF wa,

carrid TYPE spfli-carrid,

connid TYPE spfli-connid,

fldate TYPE sflight-fldate,

bookid TYPE sbook-bookid,

END OF wa,

itab LIKE SORTED TABLE OF wa

WITH UNIQUE KEY carrid connid fldate bookid.

SELECT pcarrid pconnid ffldate bbookid

INTO CORRESPONDING FIELDS OF TABLE itab

FROM ( ( spfli AS p

INNER JOIN sflight AS f ON pcarrid = fcarrid AND

pconnid = fconnid )

INNER JOIN sbook AS b ON bcarrid = fcarrid AND

bconnid = fconnid AND

bfldate = ffldate )

WHERE p~cityfrom = 'FRANKFURT' AND

p~cityto = 'NEW YORK' AND

fseatsmax > fseatsocc.

LOOP AT itab INTO wa.

AT NEW fldate.

WRITE: / wa-carrid, wa-connid, wa-fldate.

ENDAT.

WRITE / wa-bookid.

ENDLOOP.

NOTE: All the key fields should be used to fetch right data.

Read only

0 Likes
1,752

Hi,

Thanks for your kind help but i my case trdir table with name field is not a key field so its giving me an error. In the table tadir, trdirt name is the key field.

I understand what you are trying to say but is it possible in my case with 3 tables having the same field (NAME) but in only 2 tables the field is declared as key field and in another tables it is not a key field

So how should i declare the join statement .

Please let me know the example using my code which i have posted.

Thanks in Advance,

Aadi.

Read only

0 Likes
1,752

TRDIR is a "Database view", its not an Database table.

Where as TRDIRT is a Table.

Join both tables on NAME field i.e, on aNAME = bNAME, its enough.

Follow the above inner join post which i have sent.

Read only

0 Likes
1,752

Hi Adithya,

Fine but i require the fields from 3 tables like

TADIR--Name, srcsystem, Author.

TRDIR---Name, Subc,

TRDIRT---Name, Text(Short description)

Actually i developed using tadir and trdir using the above fields.

But now i want to add the Text( short description) of every object at output.

Actually the code was like this. I just want to add one more field i.e., TEXT which is present in TRDIRT.

So how should i write the code.

SELECT name subc author srcsystem devclass FROM

trdir INNER JOIN tadir ON tadirobj_name = trdirname

INTO TABLE int_cust_program WHERE obj_name IN s_prog AND

object = 'PROG' AND

author IN s_author AND

srcsystem IN s_srcsys AND

devclass IN s_packag AND

( subc = '1' OR subc = 'M' OR subc = 'F' OR subc = 'S' OR subc = 'J'

or subc = 'K' OR subc = 'T' OR subc = 'X' or subc = 'I') "Changed by Aditya

AND

(

name LIKE 'Y%' OR

name LIKE 'Z%' OR

name LIKE 'LY%' OR

name LIKE 'LZ%'

).

Read only

0 Likes
1,752

select aname atext bsrcsystem bauthor c~subc

INTO CORRESPONDING FIELDS OF TABLE int_cust_program

FROM ( ( trdirt AS a

INNER JOIN tadir AS b ON aname = bobj_name AND

asprsl = bmasterlang )

INNER JOIN trdir AS c ON aname = cname )

WHERE b~obj_name IN s_prog

AND b~object = 'PROG'

AND b~author IN s_author

AND b~srcsystem IN s_srcsys

AND b~devclass IN s_packag

AND ( csubc = '1' OR csubc = 'M' OR csubc = 'F' OR csubc = 'S' OR csubc = 'J' or csubc = 'K' OR csubc = 'T' OR csubc = 'X' or c~subc = 'I')

AND (

a~name LIKE 'Y%' OR

a~name LIKE 'Z%' OR

a~name LIKE 'LY%' OR

a~name LIKE 'LZ%'

).

<REMOVED BY MODERATOR>

Edited by: Alvaro Tejada Galindo on May 23, 2008 6:39 PM

Read only

0 Likes
1,752

Hi,

Thanks for your help but it is not fetching all the fields data, only few fields are getting fetched.

please can you look at the code once and let me know as soon as possible.

Thanks in Advance,

Aadi.