Query by example and outer join supported?
Does TopLink support outer joins when using query by example and cursored streams? I am having problems getting this to work. It seems to completely ignore the requested outer join.
I have tried several variations of what is below, but have never seen TopLink generate the outer join. This is against Oracle 9i on TopLink 9.0.4.5.
Customer 1->1 Address (using valueholder indirection)
ReadAllQuery q = new ReadAllQuery();
q.setReferenceClass(Customer.class);
QueryByExamplePolicy policy = new QueryByExamplePolicy();
policy.addSpecialOperation(String.class, "like");
q.setQueryByExamplePolicy(policy);
ExpressionBuilder builder = q.getExpressionBuilder();
Expression addressExp = builder.getAllowingNull("address");
q.addJoinedAttribute(addressExp);
q.addOrdering(addressExp.get("city").ascending());
q.useCursoredStream(end-start, end-start);
q.setExampleObject(exampleCustomer);
CursoredStream stream = (CursoredStream)s.executeQuery(q);
...iterate through the stream...
Note, that the database level relationship is expressed through a target foreign key.
( addressMapping.addTargetForeignKeyFieldName("ADDRESS.CUSTOMER_ID", "CUSTOMER.CUSTOMER_ID");)
Any help would be appreciated.
Thanks,
Kevin
Kevin,
I spoke too soon. All you need to do is use the getAllowingNull in the ordering expression and not use the addJoinedAttribute. With this you can use query-by-example with additional outer-joined ordering.
Here is an example based on the Employee demo:
ReadAllQuery raq = new ReadAllQuery(Employee.class);
ExpressionBuilder eb = raq.getExpressionBuilder();
raq.addOrdering(eb.getAllowingNull("address").get("city").ascending());
Employee exampleEmp = new Employee();
exampleEmp.setLastName("%");
// My default constructor populates the period so I'll null them so
// they are not included in the selection criteria of the example object
exampleEmp.getPeriod().setStartDate(null);
exampleEmp.getPeriod().setEndDate(null);
QueryByExamplePolicy policy = new QueryByExamplePolicy();
policy.addSpecialOperation(String.class, "like");
raq.setQueryByExamplePolicy(policy);
raq.setExampleObject(exampleEmp);
List emps = (List) session.executeQuery(raq);
I hope this helps,
Doug
Similar Messages
-
Difference between inner join and outer join
1.Difference between inner join and outer join
2.wht is the difference in using hide and get crusor value in interactive.
3. Using join is better or views in writting program . Which is better.Table 1 Table 2
A
B
C
D
D
E
F
G
H
a1
b1
c1
1
1
e1
f1
g1
h1
a2
b2
c2
1
3
e2
f2
g2
h2
a3
b3
c3
2
4
e3
f3
g3
h3
a4
b4
c4
3
|--|||--|
Inner Join
|--||||||||--|
| A | B | C | D | D | E | F | G | H |
|--||||||||--|
| a1 | b1 | c1 | 1 | 1 | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1 | 1 | e1 | f1 | g1 | h1 |
| a4 | b4 | c4 | 3 | 3 | e2 | f2 | g2 | h2 |
|--||||||||--|
Example
Output a list of all flights from Frankfurt to New York between September 10th and 20th, 2001 that are not sold out:
DATA: DATE LIKE SFLIGHT-FLDATE,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID.
SELECT FCARRID FCONNID F~FLDATE
INTO (CARRID, CONNID, DATE)
FROM SFLIGHT AS F INNER JOIN SPFLI AS P
ON FCARRID = PCARRID AND
FCONNID = PCONNID
WHERE P~CITYFROM = 'FRANKFURT'
AND P~CITYTO = 'NEW YORK'
AND F~FLDATE BETWEEN '20010910' AND '20010920'
AND FSEATSOCC < FSEATSMAX.
WRITE: / DATE, CARRID, CONNID.
ENDSELECT.
If there are columns with the same name in both tables, you must distinguish between them by prefixing the field descriptor with the table name or a table alias.
Note
In order to determine the result of a SELECT command where the FROM clause contains a join, the database system first creates a temporary table containing the lines that meet the ON condition. The WHERE condition is then applied to the temporary table. It does not matter in an inner join whether the condition is in the ON or WHEREclause. The following example returns the same solution as the previous one.
Example
Output of a list of all flights from Frankfurt to New York between September 10th and 20th, 2001 that are not sold out:
DATA: DATE LIKE SFLIGHT-FLDATE,
CARRID LIKE SFLIGHT-CARRID,
CONNID LIKE SFLIGHT-CONNID.
SELECT FCARRID FCONNID F~FLDATE
INTO (CARRID, CONNID, DATE)
FROM SFLIGHT AS F INNER JOIN SPFLI AS P
ON FCARRID = PCARRID
WHERE FCONNID = PCONNID
AND P~CITYFROM = 'FRANKFURT'
AND P~CITYTO = 'NEW YORK'
AND F~FLDATE BETWEEN '20010910' AND '20010920'
AND FSEATSOCC < FSEATSMAX.
WRITE: / DATE, CARRID, CONNID.
ENDSELECT.
Note
Since not all of the database systems supported by SAP use the standard syntax for ON conditions, the syntax has been restricted. It only allows those joins that produce the same results on all of the supported database systems:
Only a table or view may appear to the right of the JOIN operator, not another join expression.
Only AND is possible in the ON condition as a logical operator.
Each comparison in the ON condition must contain a field from the right-hand table.
If an outer join occurs in the FROM clause, all the ON conditions must contain at least one "real" JOIN condition (a condition that contains a field from tabref1 amd a field from tabref2.
Note
In some cases, '*' may be specified in the SELECT clause, and an internal table or work area is entered into the INTO clause (instead of a list of fields). If so, the fields are written to the target area from left to right in the order in which the tables appear in the FROM clause, according to the structure of each table work area. There can then be gaps between table work areas if you use an Alignment Request. For this reason, you should define the target work area with reference to the types of the database tables, not simply by counting the total number of fields. For an example, see below:
Variant 3
... FROM tabref1 LEFT [OUTER] JOIN tabref2 ON cond
Effect
Selects the data from the transparent database tables and/or views specified in tabref1 and tabref2. tabref1 und tabref2 both have either the same form as in variant 1 or are themselves join expressions. The keyword OUTER can be omitted. The database tables or views specified in tabref1 and tabref2 must be recognized by the ABAP-Dictionary.
In order to determine the result of a SELECT command where the FROM clause contains a left outer join, the database system creates a temporary table containing the lines that meet the ON condition. The remaining fields from the left-hand table (tabref1) are then added to this table, and their corresponding fields from the right-hand table are filled with ZERO values. The system then applies the WHERE condition to the table.
Left outer join between table 1 and table 2 where column D in both tables set the join condition:
Table 1 Table 2
A
B
C
D
D
E
F
G
H
a1
b1
c1
1
1
e1
f1
g1
h1
a2
b2
c2
1
3
e2
f2
g2
h2
a3
b3
c3
2
4
e3
f3
g3
h3
a4
b4
c4
3
|--|||--|
Left Outer Join
|--||||||||--|
| A | B | C | D | D | E | F | G | H |
|--||||||||--|
| a1 | b1 | c1 | 1 | 1 | e1 | f1 | g1 | h1 |
| a2 | b2 | c2 | 1 | 1 | e1 | f1 | g1 | h1 |
| a3 | b3 | c3 | 2 |NULL|NULL|NULL|NULL|NULL|
| a4 | b4 | c4 | 3 | 3 | e2 | f2 | g2 | h2 |
|--||||||||--|
Regards
Prabhu -
Generic connectivity to Sybase and outer join problem
I have a need to query records from a Sybase database running on Linux
(32-bit) and am using Oracle 10.2.0.3 with generic connectivity (no
specific heterogeneous service/transparent gateway for Sybase on Linux, that I see). We have installed
an ODBC driver on the Oracle server and can query the Sybase database
without difficulty except for outer joins.
I have tried using both the Oracle syntax and the ANSI syntax. Both
return results that are consistent with using an inner join. The ANSI
query, run directly against the Sybase database returns the correct
data (of course, removing the database link syntax).
I was looking into the possibility of using dbms_hs_passthrough, but
it does not appear to be part of the generic connectivity.
Is there a better/right way of doing this? Aren't outer joins supported?
Thanks,
VinceAs a followup, I did get dbms_hs_passthrough working and am able to get the correct data back. However, I would like to leave this as a backup.
Aren't outer joins supported in the generic connectivity?
Vince -
Inner join and outer join in infosets
hi everyone,
i have a doubt in infosets...
when and why we use inner and outer joins(right outer join and left outer join) for infoset
please give a real time scenario........
Thanks in advance.
Bye.Hello,
Inner join:
For example, the requirement is to show all sales documents where you have delivery exists. In this case, you join both sales ods and delivery ods in a infoset as inner join. This will match the record against the reference documents and pull only matched records.
Outer Join:
Suppose you want to pull all billing/invoice details along with their FI documents related data in a report. Assume that always there might be a situation that invoice exists but not posted to FI, however, you want to have all billing documents details either it has FI document or not. In this case, you link both Billing data and FI document data in a outer join. This will pull all invoices data either FI document exists or not. Other words, you want to show one side of data always but adding additional details from differenent source if data exists.
Hope, it clarifies your doubt. Let me know if any questions.
Thanks
Viswa -
hi friends,
how to use inner join and outer join methods in abap. pls explainyou have to code them
Seriously, I suggest you take an ABAP class, it's out of the scope of this forum to tech you how to program joins.
Markus -
Hi all,
I need to do query by example and let the user choose from the LOV before executing the query. I want the user to click on the button that will make the form enter the query mode and then lauch the LOV automatically. I tried to make LOV automatic display on but it would result the LOV to be display again after I execute the query.
Thanks in advance for your help.Write a trigger that openes the LOV using show_lov builtin.
Then use the value that is returned in a set_block_property('block',DEFAULT_WHERE...)
builtin. and then issue an execute_query.
you then don't need to go into enter query mode.
(If you return the LOV value to a field you might want to clear the block before you execute query or you'll get asked to save your changes. -
Performance Tunning - Connect By and Outer Join Used - Urgent
Hi,
I have written a query with the outer join and connect by prior since to establish the parent child relation ship.
All the tables having 2 lakhs record but the final result set is 20 thousand rows.
The query is taking 5 minutes to complete the execution. How could i improve the performance.
The query is
SELECT
'ABC' hrchy_id,
SUBSTR(c.abc_cd,1,1) ,
a.org_no bu_node_id,
SUBSTR(d.abc_cd,1,1) ,
a.prnt_org ,
level hrchy_lvl_nb,
a.eff_from_dt,
a.eff_to_dt,
FROM ((parent a INNER JOIN f_org b ON (a.org_no = b.org_no))
left join org c on ( (a.org_no = (c.abc_cd)))
) left join org d on ( (a.prnt_org = d.abc_cd)))
WHERE a.co_cd ='000'
START with a.prnt_org = '0'
CONNECT BY a.prnt_org = PRIOR a.org_no
ORDER SIBLINGS BY a.org_no;
Please suggest any idea or commands to improve the performance.
Thanks in advance.Can you provide the structure of tree based SQL.
Thanks in advance.But you have it already :-)
SELECT
'ABC' hrchy_id,
a.org_no bu_node_id,
a.prnt_org ,
level hrchy_lvl_nb,
a.eff_from_dt,
a.eff_to_dt,
FROM parent a WHERE a.co_cd ='000'
START with a.prnt_org = '0'
CONNECT BY a.prnt_org = PRIOR a.org_no
ORDER SIBLINGS BY a.org_no;Regards
Dmytro -
Sorry for being a newbie!
I was using JPQL to grab data from one table that requires an outer join to another table.
I thought I could do this:
select a.f1,a.f2,b.f3 from A a LEFT OUTER JOIN B b
where a.id = b.id and
a.match = b.match;
A and B are entities and I need to join with two columns. Can someone please tell me what I'm doing wrong.
Thanks!osubb wrote:
Sorry for being a newbie!Everybody starts out with less knowledge than others, no need to apologize for that.
>
I was using JPQL to grab data from one table that requires an outer join to another table.Okay.
>
I thought I could do this:
select a.f1,a.f2,b.f3 from A a LEFT OUTER JOIN B b
where a.id = b.id and
a.match = b.match;
A and B are entities and I need to join with two columns. Can someone please tell me what I'm doing wrong.
Thanks!Generally you do these kind of mappings through the Entities. For example, you can have a OneToMany / ManyToOne mapping between the two entities. Check out the Toplink reference guide for some examples on how to do this:
[http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html#ManyToOne|toplink JPA annotations reference]
Even if you are not using Toplink, this is the same for all persistence providers. -
What is the correct syntax for an outer join using JDBC. A statement such as the following is returned with an illegal char. error:
select x.value, y.value from x_table x, y_table y
where x.id = y.id(+);
I'm using oracle 8i and the thin client driver.
Thanksosubb wrote:
Sorry for being a newbie!Everybody starts out with less knowledge than others, no need to apologize for that.
>
I was using JPQL to grab data from one table that requires an outer join to another table.Okay.
>
I thought I could do this:
select a.f1,a.f2,b.f3 from A a LEFT OUTER JOIN B b
where a.id = b.id and
a.match = b.match;
A and B are entities and I need to join with two columns. Can someone please tell me what I'm doing wrong.
Thanks!Generally you do these kind of mappings through the Entities. For example, you can have a OneToMany / ManyToOne mapping between the two entities. Check out the Toplink reference guide for some examples on how to do this:
[http://www.oracle.com/technology/products/ias/toplink/jpa/resources/toplink-jpa-annotations.html#ManyToOne|toplink JPA annotations reference]
Even if you are not using Toplink, this is the same for all persistence providers. -
Query builder bug in outer joins ?
I understood that if you were joining two tables A and B, the following was a
LEFT OUTER JOIN
SELECT A.COL, B.COL
FROM A, B
WHERE A.ID = B.ID (+)
ie: a LEFT outer join has the (+) on the Right-hand table.
However, query builder puts the (+) on the Left-hand table.
Same for a RIGHT outer join - I think the (+) should be on the Left-hand table, but query builder puts it on the Right-hand table.
Cheers,
Andrew
(running Version 2.1.0.00.39)Hi Andrew,
I just played a little with the query builder and created a join between two of my tables:
PROJECTS and ACTIVITIES, linked via KCC.
When I create a left outer join in query builder, I get the following result:
select "PROJECTS"."KCC" as "KCC"
from "ACTIVITIES" "ACTIVITIES",
"PROJECTS" "PROJECTS"
where "PROJECTS"."KCC"(+) ="ACTIVITIES"."KCC"
Which is correct: Left refers to the first table in the from clause (ACTIVITIES) and places the (+) on the other table!
Left and right refers to the order of tables in the from clause, not in the where clause. Query builder sorts the tables in FROM alphabetically, maybe this is differing from the graphical order in query builder.
Regards
Alex -
Mixed Inner and Outer Joins in One SQL
Oracle 11g.
There are four tables:
T1 (primary key: pk_t1)
T2 (primary key: pk_t2, foreign key fk_t2_ref_t1)
T3 (primary key: pk_t3, foreign key fk_t3_ref_t2)
T4 (primary key: pk_t4, foreign key fk_t4_ref_t3)
This is what I want to do: inner join among T1, T2, and T3, then outer join with T4 (T4 may contain the null rows). Something like:
procedure sp_test(
p_where_clause)
select *
from
T1 inner joint T2 on pk_t1 = fk_t2_ref_t1
inner joint T3 on pk_t2 = fk_t3_ref_t2
left outer join T3 on pk_t3 = fk_t4_ref_t3
where p_where_clause;
OR
select *
from
T4 right outer join T3 on pk_t3 = fk_t4_ref_t3
inner joint T2 on pk_t2 = fk_t3_ref_t2
inner joint T1 on pk_t1 = fk_t2_ref_t1
where p_where_clause;
Please help me to write a correct SQL to achieve this goal.
ThanksHi,
Whenever you have a problem, please post a little sample data (CREATE TABLE and INSERT statements, relevant columns only) from all tables involved, so that the people who want to help you can re-create the problem and test their ideas.
Also post the results you want from that data, and an explanation of how you get those results from that data, with specific examples.
Always say which version of Oracle you're using (for example, 11.2.0.2.0).
See the forum FAQ: https://forums.oracle.com/message/9362002
I'm guessing that your first attempt
select *
from
T1 inner joint T2 on pk_t1 = fk_t2_ref_t1
inner joint T3 on pk_t2 = fk_t3_ref_t2
left outer join T3 on pk_t3 = fk_t4_ref_t3
where p_where_clause;
was close; only you want to include t4 rather than a second copy of t3, and you need to spell JOIN correctly:
SELECT * -- You'll probably want to specify columns
FROM t1
INNER JOIN t2 ON pk_t1 = fk_t2_ref_t1
INNER JOIN t3 ON pk_t2 = fk_t3_ref_t2
LEFT OUTER JOIN t4 ON pk_t3 = fk_t4_ref_t3
WHERE ... -
How to merge 3 different query results using full outer join?
Hi all This is my my query for 2 results
with t1 as (
select trans.crAcc_id,trans.cr_amt,row_number() over (order by trans.head_id) rn from Acttrans trans,
Acttranhead head where trans.head_id in(select link_id from acttrans where head_id=12) and trans.crAcc_id!=0
and head.head_id=trans.head_id
t2 as (
select trans.drAcc_id,trans.dr_amt,head.[Vouc_No],head.[Vouc_Date] ,head.[Check_No],head.[Check_Date],head.[stat],row_number() over (order by trans.head_id) rn from Acttrans trans,
Acttranhead head where trans.head_id=12 and trans.drAcc_id!=0
and head.head_id=trans.head_id
select t1.crAcc_id, t1.cr_amt,t2.[Vouc_No],t2.[Vouc_Date] ,t2.[Check_No],t2.[Check_Date],t2.[stat],t2.drAcc_id,t2.dr_amt from t1
full outer join t2 on t1.rn = t2.rn
Query 3: SELECT [CrAcc_Id] FROM [KSSDATA].[dbo].[ActTrans] where head_id=12 and crAcc_id!=0
and i want to add Query3 result to the ABOVE RESULT but i am unable add third result using full outer join
Thanks
Balu D>>>but i am unable add third result using full outer join
Do you get the error or wrong result?
Best Regards,Uri Dimant SQL Server MVP,
http://sqlblog.com/blogs/uri_dimant/
MS SQL optimization: MS SQL Development and Optimization
MS SQL Consulting:
Large scale of database and data cleansing
Remote DBA Services:
Improves MS SQL Database Performance
SQL Server Integration Services:
Business Intelligence -
Equi Join and Outer join using outer keyword
Hi,
First lets take the create statment for scott schema.
create table scott.emp_details(empno number, bonus_date date);
Insert Into Scott.Emp_Details Values(7369, To_Date('01-jan-2013'));
Insert Into Scott.Emp_Details Values(7499, To_Date('05-jan-2013'));
Insert Into Scott.Emp_Details Values(7521, To_Date('10-jan-2013'));
Insert Into Scott.Emp_Details Values(7566, To_Date('01-feb-2013'));
Insert Into Scott.Emp_Details Values(7654, To_Date('05-feb-2013'));
commit;lets also consider the basic scott.emp and scott.dept tables
Now I would like to equi join emp table deptno col with dept table deptno col and left outer join emp table hiredate with emp_details bonus_date and empno col in emp_details can be joined(Equi Join) with empno col of emp table if needed .The outer join has to be placed using the keyword (left/right)outer join
The select statement can have all the detials of emp table .The requirement may look weird but we have some such requirement.
Please suggestHi,
sri wrote:
Hi,
First lets take the create statment for scott schema.
create table scott.emp_details(empno number, bonus_date date);
Insert Into Scott.Emp_Details Values(7369, To_Date('01-jan-2013'));
Insert Into Scott.Emp_Details Values(7499, To_Date('05-jan-2013'));
Insert Into Scott.Emp_Details Values(7521, To_Date('10-jan-2013'));
Insert Into Scott.Emp_Details Values(7566, To_Date('01-feb-2013'));
Insert Into Scott.Emp_Details Values(7654, To_Date('05-feb-2013'));
commit;
It's best not to create your own tables in Oracle-supplied schemas, such as SCOTT. Use your own schema for your own tables.
lets also consider the basic scott.emp and scott.dept tablesI see; you're using the standard scott,emp and scott.dept tables, plus the emp_details table you posted above.
Now I would like to equi join emp table deptno col with dept table deptno col and left outer join emp table hiredate with emp_details bonus_date and empno col in emp_details can be joined(Equi Join) with empno col of emp table if needed .The outer join has to be placed using the keyword (left/right)outer join
The select statement can have all the detials of emp table .The requirement may look weird but we have some such requirement.
Please suggestThanks for posting the sample data. Don't forget to post the exact output you want from that sample data.
Do you want something like this?
` EMPNO ENAME DEPTNO DNAME BONUS_DAT
7369 SMITH 20 RESEARCH 01-JAN-13
7499 ALLEN 30 SALES 05-JAN-13
7521 WARD 30 SALES 10-JAN-13
7566 JONES 20 RESEARCH 01-FEB-13
7654 MARTIN 30 SALES 05-FEB-13
7698 BLAKE 30 SALES
7782 CLARK 10 ACCOUNTING
7788 SCOTT 20 RESEARCH
7839 KING 10 ACCOUNTING
7844 TURNER 30 SALES
7876 ADAMS 20 RESEARCH
7900 JAMES 30 SALES
7902 FORD 20 RESEARCH
7934 MILLER 10 ACCOUNTING
40 OPERATIONSIf so, here's one way to do it:
SELECT e.empno, e.ename -- or whatever columns you want
, d.deptno, d.dname -- or whatever columns you want
, ed.bonus_date
FROM scott.dept d
LEFT OUTER JOIN scott.emp e ON e.deptno = d.deptno
LEFT OUTER JOIN emp_details ed ON ed.empno = e.empno
ORDER BY e.empno
; -
Workspace Manager 10.1.0.4 and Outer Joins
We experience the following Problem:
We have a schema containing several Tables, one of them includes a SDO_GEOMETRY column (some Tables are about 2 million rows in size). We have to use some outer - joins in our statements, unfortunately the database - model is a generic one.
The outer joins seem to work fine when the schema is not version - enabled, the performance is ok. As soon as we version - enable the schema, the explain plans for the statements with outer joins radically change, there are several "full table access" - paths for large tables (including the one with the geometry column).
Statistics are up to date (executed dbms_stats.gather_schema_stats() with cascade => true).
Any Ideas?
cheers,
NothiHi Ben,
Thanx for your fast answer!
This is the Statement:
SELECT ress_exemp.id as ress_exemp_id, ress_exemp.ress_klasse_id as
ress_exemp_ress_klasse_id, ress_exemp.ress_standort_id as
ress_exemp_ress_standort_id, ress_exemp.ortsnetz_id as
ress_exemp_ortsnetz_id, ress_exemp.asb_id as ress_exemp_asb_id,
ress_exemp.netzbezirk_id as ress_exemp_netzbezirk_id,
TO_CHAR(ress_exemp.gueltig_von,'dd.mm.yyyy hh24:mi:ss') as
ress_exemp_gueltig_von, TO_CHAR(ress_exemp.gueltig_bis,'dd.mm.yyyy
hh24:mi:ss') as ress_exemp_gueltig_bis, ress_exemp.gf_aktion as
ress_exemp_gf_aktion, ress_exemp.gdv as ress_exemp_gdv, ress_exemp.sp as
ress_exemp_sp, ress_exemp.status as ress_exemp_status, ress_exemp.banr as
ress_exemp_banr, ress_exemp.bezeichnung as ress_exemp_bezeichnung,
ress_exemp.parent_id as ress_exemp_parent_id , GEHAEUSE.*, GEOMETRIE.*,
NETZBEZIRK.*, LOKATION.ZEILE_1, ress_standort.id as rs_id,
ress_standort.lokation_id as rs_lokation_id, ress_standort.geometrie_id as
rs_geometrie_id, ress_standort.relative_position as rs_rel_position,
ress_standort.verortung as rs_verortung, ress_standort.datenqu as
rs_datenqu, ress_standort.name_datenqu as rs_name_datenqu ,
cast(multiset(select * from RESS_EXEMP_GIS where ress_exemp_id=ress_exemp.id) as TYPE_RESS_EXEMP_GIS_LISTE) as Darstellung
from ress_exemp, GEHAEUSE, RESS_STANDORT, GEOMETRIE, NETZBEZIRK, LOKATION
WHERE ress_exemp.id = GEHAEUSE.id
AND ress_exemp.netzbezirk_id=NETZBEZIRK.id(+)
AND ress_exemp.ress_standort_id=ress_standort.id(+)
AND ress_standort.geometrie_id = geometrie.id(+)
AND ress_standort.lokation_id = lokation.id(+)
AND ress_exemp.id in (select /*+ cardinality(nlist 10) */ * from TABLE(cast(:b_ids as TYPE_NUMBER_LISTE)) nlist)
This is the plan (from trace) fro the above sql, not version enabled:
Rows Row Source Operation
1 NESTED LOOPS OUTER (cr=16 pr=5 pw=0 time=27663 us)
1 NESTED LOOPS OUTER (cr=12 pr=2 pw=0 time=15850 us)
1 NESTED LOOPS OUTER (cr=12 pr=2 pw=0 time=15828 us)
1 NESTED LOOPS OUTER (cr=8 pr=1 pw=0 time=7964 us)
1 NESTED LOOPS (cr=8 pr=1 pw=0 time=7945 us)
1 NESTED LOOPS (cr=4 pr=0 pw=0 time=123 us)
1 SORT UNIQUE (cr=0 pr=0 pw=0 time=67 us)
1 COLLECTION ITERATOR PICKLER FETCH (cr=0 pr=0 pw=0 time=18 us)
1 TABLE ACCESS BY INDEX ROWID RESS_EXEMP (cr=4 pr=0 pw=0 time=50 us)
1 INDEX UNIQUE SCAN PK_RESS_EXEMP (cr=3 pr=0 pw=0 time=29 us)(object id 160705)
1 TABLE ACCESS BY INDEX ROWID GEHAEUSE (cr=4 pr=1 pw=0 time=7811 us)
1 INDEX UNIQUE SCAN PK_GEHAEUSE (cr=3 pr=0 pw=0 time=13 us)(object id 160765)
0 TABLE ACCESS BY INDEX ROWID NETZBEZIRK (cr=0 pr=0 pw=0 time=10 us)
0 INDEX UNIQUE SCAN PK_NETZBEZIRK (cr=0 pr=0 pw=0 time=5 us)(object id 160771)
1 TABLE ACCESS BY INDEX ROWID RESS_STANDORT (cr=4 pr=1 pw=0 time=7848 us)
1 INDEX UNIQUE SCAN PK_RESS_STANDORT (cr=3 pr=0 pw=0 time=14 us)(object id 160701)
0 TABLE ACCESS BY INDEX ROWID GEOMETRIE (cr=0 pr=0 pw=0 time=9 us)
0 INDEX UNIQUE SCAN PK_GEOMETRIE (cr=0 pr=0 pw=0 time=4 us)(object id 160694)
1 TABLE ACCESS BY INDEX ROWID LOKATION (cr=4 pr=3 pw=0 time=11838 us)
1 INDEX UNIQUE SCAN PK_LOKATION (cr=3 pr=2 pw=0 time=7320 us)(object id 160692)
Takes about 0.05 seconds to execute.
Plan (from trace) after version - enabling and gather_schema_stats:
Rows Row Source Operation
1 FILTER (cr=249798 pr=313734 pw=84427 time=192750716 us)
1 HASH JOIN RIGHT SEMI (cr=249798 pr=313734 pw=84427 time=240955926 us)
1 COLLECTION ITERATOR PICKLER FETCH (cr=0 pr=0 pw=0 time=21 us)
688292 HASH JOIN RIGHT OUTER (cr=249798 pr=313734 pw=84427 time=285035131 us)
21610 VIEW (cr=235 pr=0 pw=0 time=172975 us)
21610 FILTER (cr=235 pr=0 pw=0 time=108142 us)
21610 TABLE ACCESS FULL NETZBEZIRK_LT (cr=235 pr=0 pw=0 time=43305 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN WM$NEXTVER_TABLE_NV_INDX (cr=0 pr=0 pw=0 time=0 us)(object id 9186)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$VERSION_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8896)
0 VIEW (cr=0 pr=0 pw=0 time=0 us)
0 UNION-ALL (cr=0 pr=0 pw=0 time=0 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN WM$VERSION_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8896)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
688292 HASH JOIN RIGHT OUTER (cr=249563 pr=313734 pw=84427 time=279469137 us)
515484 VIEW (cr=19385 pr=0 pw=0 time=6701465 us)
515484 FILTER (cr=5140 pr=0 pw=0 time=2577569 us)
515506 TABLE ACCESS FULL GEOMETRIE_LT (cr=5102 pr=0 pw=0 time=1546659 us)
0 FILTER (cr=3 pr=0 pw=0 time=115 us)
1 INDEX RANGE SCAN WM$NEXTVER_TABLE_NV_INDX (cr=2 pr=0 pw=0 time=38 us)(object id 9186)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=1 pr=0 pw=0 time=25 us)
0 INDEX UNIQUE SCAN WM$VERSION_PK (cr=1 pr=0 pw=0 time=16 us)(object id 8896)
1 VIEW (cr=35 pr=0 pw=0 time=958 us)
1 UNION-ALL (cr=35 pr=0 pw=0 time=894 us)
1 FILTER (cr=24 pr=0 pw=0 time=378 us)
1 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=22 pr=0 pw=0 time=263 us)(object id 8917)
2 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=4 pr=0 pw=0 time=62 us)
2 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=2 pr=0 pw=0 time=24 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
2 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=4 pr=0 pw=0 time=62 us)
2 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=2 pr=0 pw=0 time=24 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 NESTED LOOPS (cr=11 pr=0 pw=0 time=290 us)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=11 pr=0 pw=0 time=225 us)
0 INDEX RANGE SCAN WM$VERSION_PK (cr=11 pr=0 pw=0 time=151 us)(object id 8896)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
672794 HASH JOIN OUTER (cr=230178 pr=295905 pw=67004 time=197075574 us)
672794 HASH JOIN RIGHT OUTER (cr=40108 pr=77885 pw=38990 time=92436750 us)
690002 VIEW (cr=6208 pr=6139 pw=0 time=5649517 us)
690002 FILTER (cr=6208 pr=6139 pw=0 time=4269507 us)
690021 TABLE ACCESS FULL RESS_STANDORT_LT (cr=6175 pr=6139 pw=0 time=2199551 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN WM$NEXTVER_TABLE_NV_INDX (cr=0 pr=0 pw=0 time=0 us)(object id 9186)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$VERSION_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8896)
0 VIEW (cr=33 pr=0 pw=0 time=774 us)
0 UNION-ALL (cr=33 pr=0 pw=0 time=719 us)
0 FILTER (cr=22 pr=0 pw=0 time=268 us)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=20 pr=0 pw=0 time=144 us)(object id 8917)
2 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=4 pr=0 pw=0 time=80 us)
2 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=2 pr=0 pw=0 time=44 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
2 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=4 pr=0 pw=0 time=80 us)
2 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=2 pr=0 pw=0 time=44 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 NESTED LOOPS (cr=11 pr=0 pw=0 time=236 us)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=11 pr=0 pw=0 time=178 us)
0 INDEX RANGE SCAN WM$VERSION_PK (cr=11 pr=0 pw=0 time=115 us)(object id 8896)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
672794 HASH JOIN (cr=33900 pr=55205 pw=22449 time=60265506 us)
672792 TABLE ACCESS FULL GEHAEUSE_LT (cr=7219 pr=7206 pw=0 time=10207784 us)
2331315 TABLE ACCESS FULL RESS_EXEMP_LT (cr=26681 pr=25550 pw=0 time=35088531 us)
6289491 VIEW (cr=190070 pr=190006 pw=0 time=94568502 us)
6289491 FILTER (cr=190070 pr=190006 pw=0 time=81989512 us)
6289491 TABLE ACCESS FULL LOKATION_LT (cr=190070 pr=190006 pw=0 time=63121025 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN WM$NEXTVER_TABLE_NV_INDX (cr=0 pr=0 pw=0 time=0 us)(object id 9186)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$VERSION_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8896)
0 VIEW (cr=0 pr=0 pw=0 time=0 us)
0 UNION-ALL (cr=0 pr=0 pw=0 time=0 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN WM$VERSION_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8896)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN WM$NEXTVER_TABLE_NV_INDX (cr=0 pr=0 pw=0 time=0 us)(object id 9186)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$VERSION_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8896)
0 VIEW (cr=0 pr=0 pw=0 time=0 us)
0 UNION-ALL (cr=0 pr=0 pw=0 time=0 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN WM$VERSION_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8896)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN WM$NEXTVER_TABLE_NV_INDX (cr=0 pr=0 pw=0 time=0 us)(object id 9186)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$VERSION_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8896)
0 VIEW (cr=0 pr=0 pw=0 time=0 us)
0 UNION-ALL (cr=0 pr=0 pw=0 time=0 us)
0 FILTER (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 TABLE ACCESS BY INDEX ROWID WM$WORKSPACES_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX UNIQUE SCAN WM$WORKSPACES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8893)
0 NESTED LOOPS (cr=0 pr=0 pw=0 time=0 us)
0 TABLE ACCESS BY INDEX ROWID WM$VERSION_TABLE (cr=0 pr=0 pw=0 time=0 us)
0 INDEX RANGE SCAN WM$VERSION_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8896)
0 INDEX UNIQUE SCAN MODIFIED_TABLES_PK (cr=0 pr=0 pw=0 time=0 us)(object id 8917)
Rather long, sorry. As you can see, there are several TABLE ACCESS FULL - paths for large tables, causing a lot of user I/O.
I also tried to use method_opt => 'FOR ALL COLUMNS SIZE 20', unfortunately it dindn't really change the plan.
Have you got any ideas left?
thank you for your help, anything can take me further
regards,
Nothi -
Two table sources - inner and outer join
Hi All - thanks for your help in advance!
I have factA inner joined to dimA on pkA. However, I also want the ability to see all of dimA even if there's no fact associated. I've aliased dimA to dimB. So, factA is inner joined to dimA (on pkA) and factA is also outer joined to dimB (on pkB).
I want just one presentable table and one logical table. In my Logical table, I have dimA and dimB as the logical table sources. Both pkA and pkB are columns and each of the other attributes are mapped to both dimA and dimB.
In my presentation layer, I have all the columns as well as both pkA and pkB. Depending if my analysis has pkA (inner) or pkB (outer), I want to be able to pull all the other attribute columns as well. Right now, even if I have pkB (outer) in the analysis, all the other attribute columns are still null. I don't want to have to have 2 presentation tables (one for inner and another for outer). Is this possible? Or maybe there's a better way to go at it?Hi All - thanks for your help in advance!
I have factA inner joined to dimA on pkA. However, I also want the ability to see all of dimA even if there's no fact associated. I've aliased dimA to dimB. So, factA is inner joined to dimA (on pkA) and factA is also outer joined to dimB (on pkB).
I want just one presentable table and one logical table. In my Logical table, I have dimA and dimB as the logical table sources. Both pkA and pkB are columns and each of the other attributes are mapped to both dimA and dimB.
In my presentation layer, I have all the columns as well as both pkA and pkB. Depending if my analysis has pkA (inner) or pkB (outer), I want to be able to pull all the other attribute columns as well. Right now, even if I have pkB (outer) in the analysis, all the other attribute columns are still null. I don't want to have to have 2 presentation tables (one for inner and another for outer). Is this possible? Or maybe there's a better way to go at it?
Maybe you are looking for
-
Free overnight not overnight??
I ordered a new phone from Verizon. On their home page, it says free overnight if ordered before 4pm. Guess what? Mine became a 2 day shipping. Why? Verizon doesn't give a **** about old customers, only getting new customers. They reply "sorry" you d
-
I had an unauthorized purchase on my old apple ID so I created a new one since the old one had been deactivated and now I cannot update any of my apps, I have read that the apps will be tied to the old account but since the old one was deactivated I
-
I can't delete or play songs from my i-pod source
I'm not sure what's wrong, and i don't know how to change it. when i click my i-pod source button, when the i-pod is plugged in, the song names appear gray, and i can't play them or delete any of them! help me please!
-
Audio doesn't work after encoding
I have finished editing a video and gone to export it as a WMV and the audio doesn't work; there is just a buzzing noise. The audio works fine on the timeline, but i just cannot export it. Any ideas what's gone wrong?
-
Monitors Role in WLS 7.0
Hello Bea-community, I'm a relative newbie so please excuse my simple question. I've granted some users to the group monitors - but when they try to check/monitor the server-status of the managed servers, they are getting erros, such as Access not al