I have 2 almost identical SQL statements {copied except 1 is a LEFT join and 
the other is an INNER join}.
The INNER join gives me values for all of the fields. The LEFT join gives me 
NULL's for all of the prec_... {the LEFT join table} fields.
If the INNER JOIN gives me values and not an empty set then why does the LEFT 
join give me NULL's?

I have included the satements, SELECT * and CREATE TABLE for the 3 tables.
I have run this on 5.0.15 and 5.0.17.

mysql> SELECT user.user_ID, sesn.user_ID, sesn.orgn_ID, prec3.orgn_ID,
    ->        prec3.prec_Type,  prec3.prec_Level,prec3.prec_Value, 
prec3.prec_ID,
    ->        if(isnull(prec3.prec_Replace_Level),
    ->           'sesn',
    ->           prec3.prec_Replace_Level
    ->           ) as pl3
    -> FROM   users AS user
    ->        INNER JOIN sessions AS sesn
    ->        USING(user_ID
    ->              )
    ->        LEFT JOIN precedences AS prec3
    ->        ON (prec3.orgn_ID = sesn.orgn_ID
    ->            AND prec3.prec_Type = 'Phones'
    ->            AND prec3.prec_Level = 'user'
    ->            AND prec3.prec_Value = 'Primary'
    ->            AND prec3.prec_ID = 3
    ->            )
    -> where sesn.sesn_ID = 1;
+---------+---------+---------+---------+-----------+------------+------------+---------+------+
| user_ID | user_ID | orgn_ID | orgn_ID | prec_Type | prec_Level | prec_Value | 
prec_ID | pl3  |
+---------+---------+---------+---------+-----------+------------+------------+---------+------+
| AGB1    | AGB1    | AXIS    | NULL    | NULL      | NULL       | NULL       
|    NULL | sesn |
+---------+---------+---------+---------+-----------+------------+------------+---------+------+
1 row in set (0.02 sec)

mysql>
mysql>
mysql> SELECT user.user_ID, sesn.user_ID, sesn.orgn_ID, prec3.orgn_ID,
    ->        prec3.prec_Type,  prec3.prec_Level,prec3.prec_Value, 
prec3.prec_ID,
    ->        if(isnull(prec3.prec_Replace_Level),
    ->           'sesn',
    ->           prec3.prec_Replace_Level
    ->           ) as pl3
    -> FROM   users AS user
    ->        INNER JOIN sessions AS sesn
    ->        USING(user_ID
    ->              )
    ->        INNER JOIN precedences AS prec3
    ->        ON (prec3.orgn_ID = sesn.orgn_ID
    ->            AND prec3.prec_Type = 'Phones'
    ->            AND prec3.prec_Level = 'user'
    ->            AND prec3.prec_Value = 'Primary'
    ->            AND prec3.prec_ID = 3
    ->            )
    -> where sesn.sesn_ID = 1;
+---------+---------+---------+---------+-----------+------------+------------+---------+------+
| user_ID | user_ID | orgn_ID | orgn_ID | prec_Type | prec_Level | prec_Value | 
prec_ID | pl3  |
+---------+---------+---------+---------+-----------+------------+------------+---------+------+
| AGB1    | AGB1    | AXIS    | AXIS    | phones    | user       | Primary    
|       3 | locn |
+---------+---------+---------+---------+-----------+------------+------------+---------+------+
1 row in set (0.00 sec)

mysql>
mysql> SELECT * FROM sessions;
+---------+--------------+--------------+---------+---------+---------+---------+---------+---------------------+---------------------+
| sesn_ID | perm_user_ID | perm_usgp_ID | user_ID | usgp_ID | acct_ID | locn_ID 
| orgn_ID | sesn__Timestamp     | sesn_Create         |
+---------+--------------+--------------+---------+---------+---------+---------+---------+---------------------+---------------------+
|       1 | AGB1         | ADZZ         | AGB1    | ADZZ    |         | AXIS    
| AXIS    | 2005-12-23 08:32:26 | 2005-12-23 08:30:02 |
|       2 | AGB1         | ADZZ         | AGB1    | ADZZ    |         | AXIS    
| AXIS    | 2005-12-23 08:32:26 | 2005-12-23 08:30:07 |
+---------+--------------+--------------+---------+---------+---------+---------+---------+---------------------+---------------------+
2 rows in set (0.02 sec)

mysql>
mysql> SELECT * FROM users;
+---------+---------+---------+---------+--------------+------------------+-----------+------------+------------+------------+-------------+----------+---------------------+-------------+
| user_ID | orgn_ID | locn_ID | usgp_ID | prev_usgp_ID | user_Log_On_Name | 
user_Pass | user_FName | user_LName | user_PName | user_Active | user_Who | 
user_Timestamp      | user_Create |
+---------+---------+---------+---------+--------------+------------------+-----------+------------+------------+------------+-------------+----------+---------------------+-------------+
| AGB1    | AXIS    | AXIS    | ADZZ    | NULL         | gbruce           | 
rgbjs1jc  | Ralph      | Bruce      | Gordon     | Yes         | AGB1     | 
2005-12-23 08:59:31 | NULL        |
+---------+---------+---------+---------+--------------+------------------+-----------+------------+------------+------------+-------------+----------+---------------------+-------------+
1 row in set (0.00 sec)

mysql>
mysql> SELECT * FROM precedences;
+---------+-----------+------------+------------+---------+--------------------+--------------------+-------------+----------+---------------------+---------------------+
| orgn_ID | prec_Type | prec_Level | prec_Value | prec_ID | prec_Replace_Level 
| prec_Replace_Value | prec_Active | prec_Who | prec_Timestamp      | 
prec_Create         |
+---------+-----------+------------+------------+---------+--------------------+--------------------+-------------+----------+---------------------+---------------------+
| AXIS    | phones    | user       | Primary    |       1 | user               
| Primary            | Yes         | AGB1     | 2005-12-23 09:01:11 | 
2005-12-23 09:01:05 |
| AXIS    | phones    | user       | Primary    |       2 | acct               
| Primary            | Yes         | AGB1     | 2005-12-23 09:01:24 | 
2005-12-23 09:01:05 |
| AXIS    | phones    | user       | Primary    |       3 | locn               
| Primary            | Yes         | AGB1     | 2005-12-23 09:02:04 | 
2005-12-23 09:01:41 |
| AXIS    | phones    | user       | Primary    |       4 | orgn               
| Primary            | Yes         | AGB1     | 2005-12-23 09:02:01 | 
2005-12-23 09:01:56 |
+---------+-----------+------------+------------+---------+--------------------+--------------------+-------------+----------+---------------------+---------------------+
4 rows in set (0.00 sec)
mysql> SHOW CREATE TABLE sessions;
| Table    | Create Table

| sessions | CREATE TABLE `sessions` (
  `sesn_ID` int(11) NOT NULL auto_increment,
  `perm_user_ID` char(4) NOT NULL default '',
  `perm_usgp_ID` char(4) NOT NULL default '',
  `user_ID` char(4) NOT NULL default '',
  `usgp_ID` char(4) NOT NULL default '',
  `acct_ID` char(4) NOT NULL default '',
  `locn_ID` char(4) NOT NULL default '',
  `orgn_ID` char(4) NOT NULL default '',
  `sesn__Timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update 
CURRENT_TIMESTAMP,
  `sesn_Create` datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (`sesn_ID`),
  KEY `perm_user_ID_IDX` (`perm_user_ID`,`sesn_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
1 row in set (0.00 sec)
mysql> SHOW CREATE TABLE users;
| Table | Create Table

| users | CREATE TABLE `users` (
  `user_ID` char(4) NOT NULL default '',
  `orgn_ID` char(4) NOT NULL default '',
  `locn_ID` char(4) NOT NULL default '',
  `usgp_ID` char(4) NOT NULL default '',
  `prev_usgp_ID` char(4) default NULL,
  `user_Log_On_Name` char(50) NOT NULL default '',
  `user_Pass` char(50) NOT NULL default '',
  `user_FName` char(50) NOT NULL default '',
  `user_LName` char(50) NOT NULL default '',
  `user_PName` char(50) NOT NULL default '',
  `user_Active` enum('Yes','No') NOT NULL default 'Yes',
  `user_Who` char(4) NOT NULL default '',
  `user_Timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update 
CURRENT_TIMESTAMP,
  `user_Create` datetime default NULL,
  PRIMARY KEY  (`user_ID`),
  UNIQUE KEY `user_Log_On_Name_IDX` (`user_Log_On_Name`),
  KEY `usgp_ID_IDX` (`usgp_ID`),
  KEY `user_locn_ID_IDX` (`locn_ID`),
  KEY `orgn_idx` (`orgn_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
1 row in set (0.02 sec)
mysql> SHOW CREATE TABLE precedences;
| Table       | Create Table
| precedences | CREATE TABLE `precedences` (
  `orgn_ID` char(8) NOT NULL default '',
  `prec_Type` enum('phones','addresses','emails','web') NOT NULL default 
'addresses',
  `prec_Level` enum('user','acct','locn','orgn') NOT NULL default 'orgn',
  `prec_Value` char(20) NOT NULL default 'Primary',
  `prec_ID` smallint(6) NOT NULL default '0',
  `prec_Replace_Level` enum('user','acct','locn','orgn') NOT NULL default 
'orgn',
  `prec_Replace_Value` char(20) NOT NULL default 'Primary',
  `prec_Active` enum('Yes','No') NOT NULL default 'Yes',
  `prec_Who` char(8) NOT NULL default '',
  `prec_Timestamp` timestamp NOT NULL default CURRENT_TIMESTAMP on update 
CURRENT_TIMESTAMP,
  `prec_Create` datetime NOT NULL,
  PRIMARY KEY  (`orgn_ID`,`prec_Type`,`prec_Level`,`prec_Value`,`prec_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
1 row in set (0.00 sec)


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to