2007 May 01 8:06 AM
hi guru's,
i need to write the select statement as nestedselect.and is there any possibility to use for all entries in the following code.if it is then how?wat is the diff b/w inner join and join key word.i need all clarificationc.then full points.
thnx
yogi
tables : lfa1,ekko,ekpo,mara.
parameters : vendor like lfa1-lifnr.
data : begin of itab occurs 0,
lifnr like lfa1-lifnr,
ebeln like ekko-ebeln,
ebelp like ekpo-ebelp,
matnr like mara-matnr,
end of itab.
select lfa1lifnr ekkoebeln ekpoebelp maramatnr
into table itab
from lfa1
inner join ekko on lfa1lifnr = ekkolifnr
inner join ekpo on ekkoebeln = ekpoebeln
inner join mara on ekpomatnr = maramatnr
where lfa1~lifnr eq vendor.
loop at itab.
write : / itab-lifnr ,itab-ebeln,itab-ebelp,itab-matnr.
endloop.
2007 May 01 8:11 AM
If you want to split up the inner join you can use the FOR ALL ENTRIES addition, but why should you do it. 3 or 4 tables in a inner join is the limit.
What you can do ?
First get all relevant vendors in I_LFA1.
THen read the inner join for EKKO-EKPO and MARA FOR ALL ENTRIES in I_LFA1 where EKKO-LIFNR = I_LFA1-LIFNR.
INNER JOIN and JOIN is exactly the same. Default is INNER JOIN. See also the F1 for JOIN.
regards,
Hans
Please reward all helpful answers !!!!!
If you want to split up the inner join you can use the FOR ALL ENTRIES addition, but why should you do it. 3 or 4 tables in a inner join is the limit.
What you can do ?
First get all relevant vendors in I_LFA1.
THen read the inner join for EKKO-EKPO and MARA FOR ALL ENTRIES in I_LFA1 where EKKO-LIFNR = I_LFA1-LIFNR.
INNER JOIN and JOIN is exactly the same. Default is INNER JOIN. See also the F1 for JOIN.
regards,
Hans
Please reward all helpful answers !!!!!
2007 May 01 8:11 AM
If you want to split up the inner join you can use the FOR ALL ENTRIES addition, but why should you do it. 3 or 4 tables in a inner join is the limit.
What you can do ?
First get all relevant vendors in I_LFA1.
THen read the inner join for EKKO-EKPO and MARA FOR ALL ENTRIES in I_LFA1 where EKKO-LIFNR = I_LFA1-LIFNR.
INNER JOIN and JOIN is exactly the same. Default is INNER JOIN. See also the F1 for JOIN.
regards,
Hans
Please reward all helpful answers !!!!!
2007 May 01 8:17 AM
hi han's
for the code which i h've mentiond , i need to write nested select statement.how can i?
thanx
yogi
2007 May 01 8:18 AM
hi han's ,
pls give me the detail code for for all enries so tht i can understand easily.
thanx
loki
2007 May 01 8:45 AM
Please try to avoid nested selects because of bad performance !
The code with FOR ALL ENTRIES is something like :
tables : lfa1,ekko,ekpo,mara.
parameters : vendor like lfa1-lifnr.
data : begin of itab occurs 0,
lifnr like lfa1-lifnr,
ebeln like ekko-ebeln,
ebelp like ekpo-ebelp,
matnr like mara-matnr,
end of itab.
select lifnr into table i_lfa1
from lfa1
where lfa1 eq vendor.
check i_lfa1[] is not initial.
select ekkolifnr ekkoebeln ekpoebelp maramatnr
into table itab
from ekko
inner join ekpo on ekkoebeln = ekpoebeln
inner join mara on ekpomatnr = maramatnr
FOR ALL ENTRIES in i_lfa1
where ekko~lifnr eq I_LFA1.
loop at itab.
write : / itab-lifnr ,itab-ebeln,itab-ebelp,itab-matnr.
endloop.
But :
Internal table I_LFA1 only contains one entry, so do not use the I_LFA1 and FOR ALL ENTRIES, but you use :
select ekkolifnr ekkoebeln ekpoebelp maramatnr
into table itab
from ekko
inner join ekpo on ekkoebeln = ekpoebeln
inner join mara on ekpomatnr = maramatnr
where ekko~lifnr eq vendor.
regards,
Hans
2007 May 01 9:04 AM
Hi Eswar,
<b>In your SELECT query in where clause there is only one condition and for joining the tables we can write nested queries:</b>
You can nest subqueries, that is, the WHERE and HAVING clauses of subqueries can themselves contain a subquery. When a nested subquery in the WHERE clause uses fields from the previous query, it is known as a correlated query. The subquery is then processed for each line of the database table that satisfies the previous condition
<b>
Detail description about For all entries with example:</b>
/people/rob.burbank/blog/2007/03/19/joins-vs-for-all-entries--which-performs-better
<b>
Reward all helpful answers</b>
Regards,
V.Raghavender.
2007 May 01 8:54 AM
one internal table as i_lfa1.
second internal table as i_ekko
select lifnr from lfa1 into i_lfa1
where condition.
if not i_lfa1 is initial.
select aebeln bebelp b~matnr from ekpo
into table i_ekko
for all entries in i_lfa1
a as ekko inner join b as ekpo
on aebeln = bebeln
where a~lifnr = i_lfa1-lifnr.
endif.
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |