Cartesian Product in BI Reports
Hi Experts,
I have following tables
Dim: Population table
Year, Gender, Age Range, Population
2008 MALE <1 100
2008 MALE 1-20 300
2008 MALE 20+ 500
And, Fact Employee table
Employee Id, Year joined, Gender, Age range
120 2008 MALE 20+
121 2008 MALE 20+
122 2008 MALE 1-20+
123 2008 MALE 1-20+
Now, when i joined my Dim and fact across year,gender, age range. (But franly, speaking it is some thing N:N rather than 1:N)
And, when i tried to create report as Year joined, year, Population , total no. of employees
Each Year joined column in fact is multiplied across dim (instead of only one year - which is resulting in cartesian)
How to avoid.. this one ?
I knew, how to resolve this issue on answers. But, it should be done dynamically.
Edited by: GRK on Feb 4, 2013 6:50 AM
Edited by: GRK on Feb 6, 2013 10:06 AM
Since you know how to fix this using Answers; I would suggest fix it in answers->run the report-> get the BI generated Physical SQL query. Study the Physical SQL query and try to put it in RPD.
That would be the easiest way to do.
Mark if helps :)
Edited by: Srini VEERAVALLI on Feb 6, 2013 2:32 PM
Similar Messages
-
Cartesian Product - Report script
Hi All,
I am trying to export data for a specific scenario and version using report script.
I am taking level 0 members of a specific dimension and it is throwing error as follows:
"The Product of member counts across all dimensions in the query exceeds 2^64"
I think the cartesian product is beyond the limit value.
Is there any alternative method to export data of level 0 members for that dimension?
or is there any command to select only few members from that dimension, so that I can make into two scripts and execute to export data.
Thanks.
Regards
Rav"or is there any command to select only few members from that dimension,"
Take a look at the member selection report script commands. If you have a hierarchies in your dimensions than you can use these to "break up"/more narrowly focus your report script -
Cartesian Product from in-line queries
I have the following query:
SELECT AUDIT_MONTH, AUDITS, DEFECTS
FROM
select distinct(to_char(AUDIT_DATE,'MM/YY')) as AUDIT_MONTH
from v_safety_audit_records
select count(distinct(AUDIT_ID)) AUDITS
from v_safety_audit_records
group by to_char(AUDIT_DATE,'MM/YY')
select count(KEY_ID) DEFECTS
from v_safety_audit_records
where SUBAREA_ID NOT LIKE '_98'
and SUBAREA_ID NOT LIKE '_99'
group by to_char(AUDIT_DATE,'MM/YY')
but it keeps giving me a cartesian product. Is there a way to re-write this so that I only get the month, the number of audits, and number of defects on a line rather than number of months x number of months worth of lines? I can't seem to get the join conditions worked out... I can re-write this all using views, but as it is for a single report, I'd rather not bother with more views if I can avoid it.
Thanks in advance.The problem is that the query doesn't return a single row and isn't meant to. I tried:
SELECT
select distinct(to_char(AUDIT_DATE,'MM/YY'))
from v_safety_audit_records
group by to_char(AUDIT_DATE,'MM/YY')
) AUDIT_MONTH,
select count(distinct(AUDIT_ID))
from v_safety_audit_records
group by to_char(AUDIT_DATE,'MM/YY')
) AUDITS,
select count(KEY_ID)
from v_safety_audit_records
where SUBAREA_ID NOT LIKE '_98'
and SUBAREA_ID NOT LIKE '_99'
group by to_char(AUDIT_DATE,'MM/YY')
) DEFECTS
FROM DUAL;
and got "ORA-01427: single-row subquery returns more than one row". It would be a good idea if I only needed it for one month, however. -
How to force Cartesian Product for unlineked (DBF) tables
Hello
We have been using CR8.5 for many years and we are just about to perform major upgrade to CR2011. I have, howverm found one strange behavior.
Many of our reports are implemented in following way:
MainTable.DBF (contains reported rows)
ParamTable.DBF (contains one row with some general parameters)
There is no data "link" between these tables but t makes sense to expect that every record from main table will see record from param table.
in CR 8.5 Cartesian product of MainTable X ParamTable was ALWAYS available ad therefore we were able to (for example) hide the details & show only group totals, or display some header information (this can be also done by sub-report).
in CR2011, however, this seems not to be the case anymore. Namely:
any old report that I open in CR2011 has param line available only for the very first record and I was not able to find a way how to change it
if I recreate the report from the scratch, sometimes Cartesian product is "provided" and sometimes not - I really do not know the reason for the decision.
[I have one very ugly workaround: link these two tables with != (not equal operation) between two unrelated fields that can never be the same]
Is there any "solution" to this cause as it blocks us from upgrading to the latest version?
Kind Regards,
Martin FontanHi Martin,
Long story so here's the short one. As of CR 9 we completely redeveloped our database drivers and query engine. We removed all of the "hack" work arounds in our code for DB clients did not follow the rules, this forces the DB makers to fix the client engine and follow ANSII 92 standards. You also can no longer edit the SQL statement.
We have also never supported unlinked tables, CR is a Relational database reporting tool. Us a subreport if you must use an unlinked table, or as you have discovered using a != type.
Other work around is to use a Command, it' sin the Database wizard, write your own SQL, we simply pass it to the client. There is no option directly to set location from a Table to a SQL Command but search here, Brian Dong found a way around this limitation using a CR Wizard.
Thanks
Don -
What is a cartesian product why we need it and where we need it
Hi,
One of my interview they asked this question
Can any one please tell detail about it.
Thanks
Kalpana>
what is a cartesian product
>
A cartesian join is when you do not specify any join condition between tables.
So for two tables A and B the result is that every row of table B is appended to every row of table A.
If there are 10 rows in Table A and 20 rows in Table b there will be 200 rows in the result set and each row will contain every column from table A and every column from table b unless you specify specific columns.
See Cartesian Products in the SQL Language doc
http://docs.oracle.com/cd/B28359_01/server.111/b28286/queries006.htm
>
Cartesian Products
If two tables in a join query have no join condition, then Oracle Database returns their Cartesian product. Oracle combines each row of one table with each row of the other. A Cartesian product always generates many rows and is rarely useful. For example, the Cartesian product of two tables, each with 100 rows, has 10,000 rows. Always include a join condition unless you specifically need a Cartesian product. If a query joins three or more tables and you do not specify a join condition for a specific pair, then the optimizer may choose a join order that avoids producing an intermediate Cartesian product.
>
As for when? In earlier versions of Oracle I would use a cartesian join when creating report ready data tables and there needed to be data for every report period. One example is writing a Crystal Report (now business objects) to report sales for 2011 and you want the report to have a section for each month even if there was no data for that month.
Then we would use a cartesian join on a date table that had 12 records (one for each month) with totals of zero. This would make sure that there was at lease one summary record for each month so that every month would show up on the report even if we only had data for March. -
Good Morning Everyone,
We have limited knowledge in DB but we have to work according to needed.
Whenever we working on DB, we have challenges in Cartesian Product, JOIN, and more.
We created reports and looks good. We have to test for our data is accuracy and correct.
If you have experience using Toad, Query Builder, Report Builder, please share your experiences.
Thanks in advance,
NYNew Yorker wrote:
Good Morning Everyone,
We have limited knowledge in DB but we have to work according to needed.
Whenever we working on DB, we have challenges in Cartesian Product, JOIN, and more.
We created reports and looks good. We have to test for our data is accuracy and correct.
If you have experience using Toad, Query Builder, Report Builder, please share your experiences.
I believe you should read the following and gather as much as knowledge possible for all above mentioned operators.
http://download.oracle.com/docs/cd/E11882_01/server.112/e10821/toc.htm
HTH
Aman.... -
Joins between two tables generating Cartesian product
Hi All,
I am facing an issue in my report in which, I am getting mismatch as the two subsets which I'm joining is resulting in a cartesian product of individual subset's results. I am doing left join to join those two subsets. Please help in resolving
this issue.
Thank you,
Anu.Hi,
Can you please post your script to see what is causing the cartesian product?
This way it is difficult to help you.
Regards,
Reshma
Please Vote as Helpful if an answer is helpful and/or Please mark Proposed as Answer or Mark As Answer when question is answered -
Production order wise report of all component.
dear all
I want production order wise report of all component.
1) quantity required 2)issue quantity3)currect stock
I got quantity required and issue quantity field in co24 but i didnt get currect stock field(unrestricted stock) in that t-code
Is any t-code is available ?
rgds
SurendraHy Surendra,
In any of the standard SAP reports you will not find the Goods Movements of Particular order along with available Component stock.
Goods movements report of the Production / Process order is static report once the order is close.While Stock report is variable report and may be change Time to Time.
I think if you wish such kind of report then you have to go for Z reorts.
You can find all the Goods Movements of Order in COOISPI/COOIS/IW3M but there is not available stock report.
Regards,
Dhaval -
Best performance in a cartesian product
i've got a select that needs a cartesian product.
ex:
SELECT NVL(a.year,cp.year) year, NVL(a.month,cp.month), NVL(a.value,0) value
FROM
(select year, month from year, month) cp, values a
WHERE cp.year = a.year(+) AND cp.month = a.month(+)
i have to show all records possible even if they don't have any values on the table.
In the beginning with fewer values, it ran OK.... but now with a lot more it begins to take a little longer (about 10 times longer).
What is the best way to improve this kind of selects???
Thank you.Best Case :
No one shold be in red color in analysis is the best runtime.
All should be in Green.
or
OK Case :
Database level - Red is not acceptable
ABAP Level - Red can be accepted and can be a good runtime.
System Level - Red is not acceptable.
Worst Case:
All are in Red Color -
Query resulting in cartesian product-plz help
select count(distinct e.hiredate),count(distinct b.hiredate) from scott.emp e, scott.emp b where e.hiredate<to_date('01-DEC-80','DD-MON-YY') and b.hiredate<to_date('23-JUN-81','DD-MON-YY')
Hi,
When I query it individually its giving me as below and its correct.
SQL> select count(hiredate) from scott.emp where hiredate<'01-DEC-81';
COUNT(HIREDATE)
9
SQL> select count(hiredate) from scott.emp where hiredate<'23-JUN-81';
COUNT(HIREDATE)
6
Now I want these two merged in same query and it should give me the same result
SQL> select count(distinct e.hiredate),count(distinct b.hiredate) from scott.emp
e, scott.emp b where e.hiredate<'01-DEC-80' and b.hiredate<'23-JUN-81';
COUNT(DISTINCTE.HIREDATE) COUNT(DISTINCTB.HIREDATE)
0 0
But its giving me either cartesian product or the result above.
I have already used logical operator AND . -
Vendor wise product wise details report
Dear all,
please give me any standard report for vendorwise product wise details. and also customer wise and product wise details report.Pls have a look on the blw link which is the std sap reports, its provided by sap.. hope it will be helpful for u.
https://www.sdn.sap.com/irj/scn/wiki?path=/display/erplo/sapStandardReports -
Urgent plz help me out about cartesian product
plz...its urgent,can anyone help in the following query where iam getting cartesian product,so how to get result without cartesian product
this is the query
SELECT DISTINCT MIS.segment1 "ITEM CODE",
MIS.DESCRIPTION "DESCRIP"
,MIS.Primary_uom_code "UOM",
MTL.LOT_NUMBER "LOT NUMBER"
,A.PARTY_NUMBER "CUSTOMER NUMBER",
A.PARTY_NAME "CUSTOMER NAME",
(A.ADDRESS1||A.ADDRESS2||A.ADDRESS3||A.ADDRESS4) "SHIP TO",
B.DELIVERY_DETAIL_ID "DO NO",B.SHIPPED_QUANTITY "SHIPPED QUANTITY"
,C.ULTIMATE_DROPOFF_DATE "ISSUED DATE"
,D.ORDER_NUMBER "SALES ORDER NUMBER"
,E.LINE_NUMBER "SALES ORDER LINE"
FROM MTL_SYSTEM_ITEMS MIS
,MTL_TRANSACTION_LOT_NUMBERS MTL
,HZ_PARTIES A,
WSH_DELIVERY_DETAILS B,
WSH_NEW_DELIVERIES C,
OE_ORDER_HEADERS_ALL D,
OE_ORDER_LINES_ALL E
WHERE MIS.INVENTORY_ITEM_ID=MTL.INVENTORY_ITEM_ID
AND B.INVENTORY_ITEM_ID=MIS.INVENTORY_ITEM_ID
AND A.PARTY_ID=B.CUSTOMER_ID
AND B.DELIVERY_DETAIL_ID=C.DELIVERY_ID
AND MIS.INVENTORY_ITEM_ID=E.INVENTORY_ITEM_ID
AND D.HEADER_ID=E.HEADER_IDA lot of times when I get duplicate results, I'll do a select * and see why. Often one of those tables will have a sequenced value that could repeat several times for a combination of values.
If thats the case, you may need to add something like:
...and a.id = (select min(id)
from b
where a.col = b.col) -
General algorithm for cartesian product
i am looking for an algorithm to get the cartesian product from a set of sets like {{1,2,3,4},{a,b,c},{x,y,z,7,15}...} - this means in most general form.
google yields no results :-(. i think implementing it by myself is not a good idea.dermoritz wrote:
prometheuzz is your algorithm better than n*mi n: number of sets mi: cardinality of the set i ?
can you short explain the algorithm?You can't do any better than that because for n sets: S(0), S(1), S(2) ... S(n-1) there are prod(i in [0, n), |S(i)|) elements of the caresian product. Prometeuzz algorithm generates
one at ever pass of the loop executing n steps per element. If you're afraid that the product number will be too large you can also fiddle with the indexes themselves:
// scard[i] == |S(i)|
// prod[i] == element of S(i) in product
int[] next(int[] scard, int[] prod) {
for (int i= prod.lerngth; i-- > 0; prod= 0)
if (++prod[i] < scard[i]) return prod; // return indexes of next product
return null; // no next product anymore
}kind regards,
Jos -
Query having cartesian product
hi
i have the following query
select f.item_number, case when f.item_number='1020101002' then f.calc_cement_sk else f.calc_amount end act
from XXNP_OPN_JOBLOG_EST_002 F WHERE f.OPN_JOBLOG_001_ID ='6369'
output
ITEM_NUMBER ACT
1020101001 NULL
1020111001 NULL
1020112001 NULL
1020113004 NULL
1020101002 494
1020102007 232
1020103004 37
1020104004 557
1020106002 20896
1020111001 5
1020112005 16253
1020112008 46
1020113004 40
1020222010 1393
ie 14 rows
another query
SELECT J.ITEM_NUMBER,j.opn_value FROM XXNP_OPN_JOBLOG_RES_005 J WHERE J.OPN_JOBLOG_001_ID ='6369'
output
ITEM_NUMBER OPN_VALUE
1010101003 1
1010101004 3
1010101005 2
1010104016 1
1010103001 76
1010103002 228
1010106001 2
1010106006 147
1010107010 1
1010109009 1
1010107015 866
1010107014 799
1010107016 1631
ie 13 rows
when i do
select f.item_number, case when f.item_number='1020101002' then f.calc_cement_sk else f.calc_amount end act ,j.opn_value
from XXNP_OPN_JOBLOG_EST_002 F ,XXNP_OPN_JOBLOG_RES_005 J where f.OPN_JOBLOG_001_ID = J.OPN_JOBLOG_001_ID and f.OPN_JOBLOG_001_ID ='6369'
i get 182 rows :( i know its due to cartesian product
is there any way i can get 27 rows only ,can i get the output in the format given below
ITEM_NUMBER ACT opn_value
1020101001 NULL
1020111001 NULL
1020112001 NULL
1020113004 NULL
1020101002 494
1020102007 232
1020103004 37
1020104004 557
1020106002 20896
1020111001 5
1020112005 16253
1020112008 46
1020113004 40
1020222010 1393
1010101003 1
1010101004 3
1010101005 2
1010104016 1
1010103001 76
1010103002 228
1010106001 2
1010106006 147
1010107010 1
1010109009 1
1010107015 866
1010107014 791
1010107016 1631kindly guide
thanking in advance
Edited by: makdutakdu on Mar 31, 2011 8:03 AMhi
script for XXNP_OPN_JOBLOG_RES_005
CREATE TABLE XXNP_OPN_JOBLOG_RES_005
OPN_JOBLOG_005_ID NUMBER,
OPN_JOBLOG_001_ID NUMBER,
WIP_ENTITY_ID NUMBER,
WIP_ENTITY_NAME VARCHAR2(240 BYTE),
OPN_RESOURCE_CODE VARCHAR2(30 BYTE),
OPN_UOM_CODE VARCHAR2(30 BYTE),
OPN_VALUE NUMBER,
OPN_MOV_DATE DATE,
ORG_ID NUMBER(15),
CREATION_DATE DATE,
CREATED_BY NUMBER(15),
LAST_UPDATE_DATE DATE,
LAST_UPDATED_BY NUMBER(15),
LAST_UPDATE_LOGIN NUMBER(15),
OPN_RESOURCE_DESC VARCHAR2(500 BYTE),
ITEM_PRICE NUMBER,
ITEM_NUMBER NUMBER(10),
DIS_PER NUMBER(3),
EST_VALUE NUMBER(15,3),
VAL_ESTAB NUMBER(15,3)
script for XXNP_OPN_JOBLOG_EST_002
CREATE TABLE XXNP_OPN_JOBLOG_EST_002
OPN_JOBLOG_002_ID NUMBER,
OPN_JOBLOG_007_ID NUMBER,
INVENTORY_ITEM_ID NUMBER,
ITEM_NUMBER VARCHAR2(20 BYTE),
ITEM_NAME VARCHAR2(40 BYTE),
ITEM_UOM VARCHAR2(30 BYTE),
ITEM_VALUE NUMBER,
ITEM_PERCENT NUMBER,
OPN_AMOUNT NUMBER,
ITEM_CEMENT_SK NUMBER,
ORG_ID NUMBER(15),
CREATION_DATE DATE,
CREATED_BY NUMBER(15),
LAST_UPDATE_DATE DATE,
LAST_UPDATED_BY NUMBER(15),
LAST_UPDATE_LOGIN NUMBER(15),
OPN_JOBLOG_001_ID NUMBER,
OPN_JOBLOG_006_ID NUMBER,
ITEM_REF NUMBER,
DESCRIPTION VARCHAR2(500 BYTE),
CALC_AMOUNT NUMBER,
CALC_CEMENT_SK NUMBER,
) -
Hi all!
I need help.
I have this function that launches a Select. My Oracle Grid tells me, when I tune the Select of this function, that there is a Cartesian Product. I understand what a Cartesian Product is, but I fail to find it. Can you help me by pointing out WHERE is the misteke? Thank you!!
P.s. Oracle EE 10.2.0.4 on windows Server 2003 R2 SP2 64Bit
[code]
create or replace
FUNCTION "ANA_GETVERBALE"
v_VerbaleId IN NUMBER DEFAULT NULL,
v_Sezione IN VARCHAR2 DEFAULT NULL,
v_NumeroVerbale IN VARCHAR2 DEFAULT NULL,
v_DataVerbale IN DATE DEFAULT NULL,
v_TargaVeicolo IN VARCHAR2 DEFAULT NULL,
v_Serie IN VARCHAR2 DEFAULT NULL,
v_LoggedUser IN VARCHAR2 DEFAULT NULL
RETURN SYS_REFCURSOR
AS
cv_1 SYS_REFCURSOR;
BEGIN
OPEN cv_1 FOR
SELECT
ANA_M.VerbaleId,
ANA_M.Sezione,
ANA_M.NumeroVerbale,
ANA_M.DataVerbale,
ANA_M.TargaVeicolo,
ANA_M.Serie,
SCH_C.StatoCartellinoId,
LOV_StatoCartellino.ListOfValueName StatoCartellino,
sch_c.cartellinoid
FROM ANA_Materia_Verbale ANA_M
INNER JOIN SCH_Cartellini SCH_C ON SCH_C.SoggettoId=ana_m.verbaleid AND SCH_C.TipoSoggettoId = SIS_CONSTANTS_PKG.VB
INNER JOIN SIC_PROFILO_STATO SIC_PSC ON SIC_PSC.STATOID=SCH_C.STATOCARTELLINOID
INNER JOIN SIC_PROFILI_USERS SIC_PUC ON SIC_PUC.PROFILOID=SIC_PSC.PROFILOID AND SIC_PUC.PERSONALID=v_LoggedUser
LEFT JOIN TYP_ListOfValues LOV_StatoCartellino ON LOV_StatoCartellino.ListOfValueId = SCH_C.StatoCartellinoId
WHERE ( v_VerbaleId = SIS_CONSTANTS_PKG.AnyBigint OR ANA_M.VerbaleId = v_VerbaleId )
AND ( v_Sezione = SIS_CONSTANTS_PKG.AnyString OR REGEXP_LIKE(ANA_M.Sezione, '^' || v_Sezione || '$', 'i') )
AND ( v_serie = SIS_CONSTANTS_PKG.AnyString OR REGEXP_LIKE(ANA_M.Serie, '^' || v_Serie || '$', 'i') )
AND ( v_NumeroVerbale = SIS_CONSTANTS_PKG.AnyString OR ANA_M.NumeroVerbale = v_NumeroVerbale )
AND ( v_DataVerbale = SIS_CONSTANTS_PKG.AnyDateTime OR ANA_M.DataVerbale = v_DataVerbale )
AND ( v_TargaVeicolo = SIS_CONSTANTS_PKG.AnyString OR REGEXP_LIKE(ANA_M.TargaVeicolo,'^' || v_TargaVeicolo || '$', 'i') );
RETURN cv_1;
END;
[/code]....ouch... well that explains a LOT!! The real problem was the Oracle Grid SQL_TUNING that warned me that the SELECT contained a CARTESIAN PRODUCT:
Ristruttura SQL
An expensive cartesian product operation was found at line ID 4 of the execution plan.
Consider removing the disconnected table or view from this statement or add a join condition which refers to it.
A cartesian product should be avoided whenever possible because it is an expensive operation and might produce a large amount of data.
with this EXECUTION PLAN:
Operazione
ID riga
Oggetto
Object type
Ordine
Righe
Dimensione (KB)
Costo
Tempo (sec)
Costo CPU
Costo I/O
SELECT STATEMENT
0
13
1
0,091
460
6
116.852.560
452
NESTED LOOPS OUTER
1
12
1
0,091
460
6
116.852.560
452
NESTED LOOPS
2
9
1
0,079
459
6
116.843.328
451
NESTED LOOPS
3
7
2
0,141
457
6
116.826.984
449
MERGE JOIN CARTESIAN
4
4
2
0,102
451
6
116.781.136
443
INDEX FAST FULL SCAN
5
DOCARK.PK_SIC_PROFILI_USERS
INDEX (UNIQUE)
1
1
0,010
2
1
81.903
2
BUFFER SORT
6
3
2
0,082
449
6
116.699.232
441
TABLE ACCESS FULL
7
DOCARK.ANA_MATERIA_VERBALE
TABLE
2
2
0,082
449
6
116.699.232
441
TABLE ACCESS BY INDEX ROWID
8
DOCARK.SCH_CARTELLINI
TABLE
6
1
0,020
3
1
22.924
3
INDEX RANGE SCAN
9
DOCARK.IDX_SCH_CARTELLINI_SOG_TIPO
INDEX
5
1
2
1
15.493
2
INDEX RANGE SCAN
10
DOCARK.PK_SIC_PROFILO_STATO
INDEX (UNIQUE)
8
1
0,009
1
1
8.171
1
TABLE ACCESS BY INDEX ROWID
11
DOCARK.TYP_LISTOFVALUES
TABLE
11
1
0,012
1
1
9.231
1
INDEX UNIQUE SCAN
12
DOCARK.PK_TYP_LISTOFVALUES
INDEX (UNIQUE)
10
1
0
1
1.900
0
So I started trying to REMOVE the Cartesian Product. But first I had to find it! So apparently I shouldn't worry too much...
The real problem is that I have to work with funtions and DBs created by others, so I am not sure what to expect from most of the Functions. Apparently this execution is correct no matter what that the Tunig Advisor says!
Thanks!
Maybe you are looking for
-
I need to know about date function in Java
Hi All, Here is my question - I need to subract 18 months from a particular date. How do I do that using Java coding? eg: 09/30/2003 - 18 months = 03/30/2002 I have to to code this in Java in order to use it in one of my application. I would apprecia
-
Facetime crashes upon receiving a call
Facetime crashes only upon receiving a call. If facetime is already open facetime does not crash. Outgoing calls are completely okay. Can anybody help? Here's a the crashlog: Process: FaceTime [12653]f Path: /Applications/FaceTime.
-
Captivate 4.0 - Adjust Font for Fill in the Blank answer selections
I have a series of Fill in the Blank questions on an exam I am creating. However, I need to enlarge the font in the answer dropdown box and cannot find how to do this. Please advise
-
Reset security code of nokia c2-02
I changed my cell's security code and now i have forgetten that code please help
-
Mini - "Waiting for Disc Drive"
Attempting to copy some pictures from an SD card in a mac mini to a CD in the optical drive on an iMac. Mac Mini says its waiting for the optical drive with a message ""Waiting for Disc Drive". It won't progess beyond this message. I've tried to con