Description:
#Query-1: does not work
#Error Code : 1120
#Cross dependency found in OUTER JOIN. Examine your ON conditions
# outer join tb_person,tb_contact is third line
SELECT count(*)
from tb_contact c , tb_favorite f
LEFT OUTER JOIN tb_ctry ctry ON c.ctry_id = ctry.id
LEFT OUTER JOIN tb_ctry ctry2 ON p.ctry_id = ctry2.id
LEFT OUTER JOIN tb_person p ON p.contact_id = c.id
LEFT OUTER JOIN tb_x x1 ON x1.x_id = c.x_category
LEFT OUTER JOIN tb_x x2 ON x2.x_id = c.x_business1
LEFT OUTER JOIN tb_x x3 ON x3.x_id = c.region
LEFT OUTER JOIN tb_x x4 ON x4.x_id = c.business2
LEFT OUTER JOIN tb_x x5 ON x5.x_id = c.category2
LEFT OUTER JOIN tb_x x6 ON x6.x_id = p.x_mrmrs
LEFT OUTER JOIN tb_acl acl ON (acl.objid = c.id and acl.obj = 'con')
WHERE c.id = f.objid
AND f.obj = 'con'
AND f.usr_id = 10
AND c.client_id = 1
# Query-2: does work correctly
# the only difference is the ordering of outer joins
# outer join tb_person,tb_contact is first line
SELECT count(*)
from tb_contact c , tb_favorite f
LEFT OUTER JOIN tb_person p ON p.contact_id = c.id
LEFT OUTER JOIN tb_ctry ctry ON c.ctry_id = ctry.id
LEFT OUTER JOIN tb_ctry ctry2 ON p.ctry_id = ctry2.id
LEFT OUTER JOIN tb_x x1 ON x1.x_id = c.x_category
LEFT OUTER JOIN tb_x x2 ON x2.x_id = c.x_business1
LEFT OUTER JOIN tb_x x3 ON x3.x_id = c.region
LEFT OUTER JOIN tb_x x4 ON x4.x_id = c.business2
LEFT OUTER JOIN tb_x x5 ON x5.x_id = c.category2
LEFT OUTER JOIN tb_x x6 ON x6.x_id = p.x_mrmrs
LEFT OUTER JOIN tb_acl acl ON (acl.objid = c.id and acl.obj = 'con')
WHERE c.id = f.objid
AND f.obj = 'con'
AND f.usr_id = 10
AND c.client_id = 1
How to repeat:
# create tables an run the queries
#
create table tb_contact
(
id INTEGER AUTO_INCREMENT not null,
parent_id INTEGER ,
name VARCHAR(70) not null,
name2 VARCHAR(70) ,
namenorm VARCHAR(100) ,
nr VARCHAR(30) ,
nameshort VARCHAR(70) ,
nameshortnorm VARCHAR(100) not null,
street1 VARCHAR(100) ,
street2 VARCHAR(100) ,
zip VARCHAR(30) ,
city VARCHAR(30) ,
state VARCHAR(30) ,
region VARCHAR(30) ,
ctry_id INTEGER ,
phone VARCHAR(30) ,
phone1 VARCHAR(30) ,
fax VARCHAR(30) ,
x_business1 VARCHAR(30) ,
business2 VARCHAR(30) ,
business3 VARCHAR(30) ,
x_category VARCHAR(30) ,
category2 VARCHAR(30) ,
www VARCHAR(50) ,
mail VARCHAR(50) ,
comment TEXT ,
archive CHAR(1) not null,
field1 VARCHAR(30) ,
field2 VARCHAR(30) ,
field3 VARCHAR(30) ,
field4 VARCHAR(30) ,
field5 VARCHAR(30) ,
x1 CHAR(1) ,
x2 CHAR(1) ,
x3 CHAR(1) ,
x4 CHAR(1) ,
x5 CHAR(1) ,
crea VARCHAR(50) not null,
crea_usr INTEGER not null,
upd VARCHAR(50) ,
upc SMALLINT not null,
client_id INTEGER not null,
primary key (id)
);
create table tb_favorite
(
id INTEGER AUTO_INCREMENT not null,
usr_id INTEGER not null,
obj VARCHAR(15) not null,
objid INTEGER not null,
primary key (id)
);
create table tb_person
(
id INTEGER AUTO_INCREMENT not null,
contact_id INTEGER ,
x_mrmrs VARCHAR(30) ,
fname VARCHAR(30) ,
lname VARCHAR(30) not null,
lnamenorm VARCHAR(100) ,
title VARCHAR(30) ,
department VARCHAR(30) ,
jobtitle VARCHAR(30) ,
decision CHAR(1) ,
phone VARCHAR(30) ,
phone1 VARCHAR(30) ,
phone2 VARCHAR(30) ,
mail VARCHAR(50) ,
mail1 VARCHAR(50) ,
zip VARCHAR(30) ,
city VARCHAR(30) ,
street1 VARCHAR(100) ,
state VARCHAR(30) ,
region VARCHAR(30) ,
ctry_id INTEGER ,
x_source VARCHAR(30) ,
birthday VARCHAR(8) ,
archive CHAR(1) not null,
comment TEXT ,
field1 VARCHAR(30) ,
field2 VARCHAR(30) ,
field3 VARCHAR(30) ,
field4 VARCHAR(30) ,
field5 VARCHAR(30) ,
x1 CHAR(1) ,
x2 CHAR(1) ,
x3 CHAR(1) ,
x4 CHAR(1) ,
x5 CHAR(1) ,
crea VARCHAR(50) not null,
crea_usr INTEGER not null,
upc SMALLINT not null,
upd VARCHAR(50) ,
client_id INTEGER not null,
primary key (id)
);
create table tb_ctry
(
id INTEGER AUTO_INCREMENT not null,
code CHAR(3) ,
name VARCHAR(30) ,
timeoffset_utc TINYINT ,
zip_prefix VARCHAR(30) ,
upc SMALLINT not null,
client_id INTEGER not null,
primary key (id)
);
create table tb_x
(
x_id VARCHAR(30) not null,
list_text VARCHAR(30) not null,
list_sort SMALLINT ,
parent_id VARCHAR(30) ,
edit CHAR(1) not null,
is_default CHAR(1) not null,
crea VARCHAR(50) not null,
crea_usr INTEGER not null,
upc SMALLINT not null,
upd VARCHAR(50) ,
client_id INTEGER not null,
primary key (x_id)
);
create table tb_acl
(
objid INTEGER not null,
obj VARCHAR(15) not null,
usr TEXT ,
crea VARCHAR(50) not null,
crea_usr INTEGER not null,
upd VARCHAR(50) ,
upc SMALLINT not null,
client_id INTEGER not null,
primary key (objid, obj)
);
Description: #Query-1: does not work #Error Code : 1120 #Cross dependency found in OUTER JOIN. Examine your ON conditions # outer join tb_person,tb_contact is third line SELECT count(*) from tb_contact c , tb_favorite f LEFT OUTER JOIN tb_ctry ctry ON c.ctry_id = ctry.id LEFT OUTER JOIN tb_ctry ctry2 ON p.ctry_id = ctry2.id LEFT OUTER JOIN tb_person p ON p.contact_id = c.id LEFT OUTER JOIN tb_x x1 ON x1.x_id = c.x_category LEFT OUTER JOIN tb_x x2 ON x2.x_id = c.x_business1 LEFT OUTER JOIN tb_x x3 ON x3.x_id = c.region LEFT OUTER JOIN tb_x x4 ON x4.x_id = c.business2 LEFT OUTER JOIN tb_x x5 ON x5.x_id = c.category2 LEFT OUTER JOIN tb_x x6 ON x6.x_id = p.x_mrmrs LEFT OUTER JOIN tb_acl acl ON (acl.objid = c.id and acl.obj = 'con') WHERE c.id = f.objid AND f.obj = 'con' AND f.usr_id = 10 AND c.client_id = 1 # Query-2: does work correctly # the only difference is the ordering of outer joins # outer join tb_person,tb_contact is first line SELECT count(*) from tb_contact c , tb_favorite f LEFT OUTER JOIN tb_person p ON p.contact_id = c.id LEFT OUTER JOIN tb_ctry ctry ON c.ctry_id = ctry.id LEFT OUTER JOIN tb_ctry ctry2 ON p.ctry_id = ctry2.id LEFT OUTER JOIN tb_x x1 ON x1.x_id = c.x_category LEFT OUTER JOIN tb_x x2 ON x2.x_id = c.x_business1 LEFT OUTER JOIN tb_x x3 ON x3.x_id = c.region LEFT OUTER JOIN tb_x x4 ON x4.x_id = c.business2 LEFT OUTER JOIN tb_x x5 ON x5.x_id = c.category2 LEFT OUTER JOIN tb_x x6 ON x6.x_id = p.x_mrmrs LEFT OUTER JOIN tb_acl acl ON (acl.objid = c.id and acl.obj = 'con') WHERE c.id = f.objid AND f.obj = 'con' AND f.usr_id = 10 AND c.client_id = 1 How to repeat: # create tables an run the queries # create table tb_contact ( id INTEGER AUTO_INCREMENT not null, parent_id INTEGER , name VARCHAR(70) not null, name2 VARCHAR(70) , namenorm VARCHAR(100) , nr VARCHAR(30) , nameshort VARCHAR(70) , nameshortnorm VARCHAR(100) not null, street1 VARCHAR(100) , street2 VARCHAR(100) , zip VARCHAR(30) , city VARCHAR(30) , state VARCHAR(30) , region VARCHAR(30) , ctry_id INTEGER , phone VARCHAR(30) , phone1 VARCHAR(30) , fax VARCHAR(30) , x_business1 VARCHAR(30) , business2 VARCHAR(30) , business3 VARCHAR(30) , x_category VARCHAR(30) , category2 VARCHAR(30) , www VARCHAR(50) , mail VARCHAR(50) , comment TEXT , archive CHAR(1) not null, field1 VARCHAR(30) , field2 VARCHAR(30) , field3 VARCHAR(30) , field4 VARCHAR(30) , field5 VARCHAR(30) , x1 CHAR(1) , x2 CHAR(1) , x3 CHAR(1) , x4 CHAR(1) , x5 CHAR(1) , crea VARCHAR(50) not null, crea_usr INTEGER not null, upd VARCHAR(50) , upc SMALLINT not null, client_id INTEGER not null, primary key (id) ); create table tb_favorite ( id INTEGER AUTO_INCREMENT not null, usr_id INTEGER not null, obj VARCHAR(15) not null, objid INTEGER not null, primary key (id) ); create table tb_person ( id INTEGER AUTO_INCREMENT not null, contact_id INTEGER , x_mrmrs VARCHAR(30) , fname VARCHAR(30) , lname VARCHAR(30) not null, lnamenorm VARCHAR(100) , title VARCHAR(30) , department VARCHAR(30) , jobtitle VARCHAR(30) , decision CHAR(1) , phone VARCHAR(30) , phone1 VARCHAR(30) , phone2 VARCHAR(30) , mail VARCHAR(50) , mail1 VARCHAR(50) , zip VARCHAR(30) , city VARCHAR(30) , street1 VARCHAR(100) , state VARCHAR(30) , region VARCHAR(30) , ctry_id INTEGER , x_source VARCHAR(30) , birthday VARCHAR(8) , archive CHAR(1) not null, comment TEXT , field1 VARCHAR(30) , field2 VARCHAR(30) , field3 VARCHAR(30) , field4 VARCHAR(30) , field5 VARCHAR(30) , x1 CHAR(1) , x2 CHAR(1) , x3 CHAR(1) , x4 CHAR(1) , x5 CHAR(1) , crea VARCHAR(50) not null, crea_usr INTEGER not null, upc SMALLINT not null, upd VARCHAR(50) , client_id INTEGER not null, primary key (id) ); create table tb_ctry ( id INTEGER AUTO_INCREMENT not null, code CHAR(3) , name VARCHAR(30) , timeoffset_utc TINYINT , zip_prefix VARCHAR(30) , upc SMALLINT not null, client_id INTEGER not null, primary key (id) ); create table tb_x ( x_id VARCHAR(30) not null, list_text VARCHAR(30) not null, list_sort SMALLINT , parent_id VARCHAR(30) , edit CHAR(1) not null, is_default CHAR(1) not null, crea VARCHAR(50) not null, crea_usr INTEGER not null, upc SMALLINT not null, upd VARCHAR(50) , client_id INTEGER not null, primary key (x_id) ); create table tb_acl ( objid INTEGER not null, obj VARCHAR(15) not null, usr TEXT , crea VARCHAR(50) not null, crea_usr INTEGER not null, upd VARCHAR(50) , upc SMALLINT not null, client_id INTEGER not null, primary key (objid, obj) );