Forum Moderators: open

Message Too Old, No Replies

MySQL JOIN not returning expected results

unable to get expected results when joining two tables in MySQL

         

techtheatre

12:56 am on Apr 16, 2009 (gmt 0)

10+ Year Member



I am perplexed by this MySQL Join statement. I would expect it to return all 10 or so records from my StaffInfo my table, but for some reason it is only returning three. I am sure it is some super simple rookie mistake, but I cannot figure it out. THANKS!

SELECT Info.StaffId, Info.StaffNamePrefix, Info.StaffNameFirst, Info.StaffNameFamily, Info.StaffNameSuffix, Info.StaffTitle, Info.StaffBio, Grp.GroupName FROM sample_StaffInfo Info LEFT JOIN sample_StaffGroup Grp ON Info.StaffGroup = Grp.GroupId GROUP BY Grp.GroupName ORDER BY Grp.SortOrder ASC, Grp.GroupName DESC, Info.SortOrder ASC, Info.StaffNameFamily DESC, Info.StaffNameFirst DESC ;

Tables:
CREATE TABLE `sample_StaffGroup` (
`GroupId` int(5) NOT NULL auto_increment,
`GroupName` varchar(100) collate latin1_general_ci NOT NULL,
`SortOrder` int(2) NOT NULL default '50',
PRIMARY KEY (`GroupId`)
) ENGINE=MyISAM AUTO_INCREMENT=5 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=5 ;

INSERT INTO `sample_StaffGroup` VALUES (1, 'Doctors', 50);
INSERT INTO `sample_StaffGroup` VALUES (2, 'Staff', 50);
INSERT INTO `sample_StaffGroup` VALUES (3, 'Nurses', 50);
INSERT INTO `sample_StaffGroup` VALUES (4, 'Technicians', 50);

-- --------------------------------------------------------

CREATE TABLE `sample_StaffInfo` (
`StaffId` int(5) NOT NULL auto_increment,
`StaffNamePrefix` varchar(10) collate latin1_general_ci NOT NULL,
`StaffNameFirst` varchar(100) collate latin1_general_ci NOT NULL,
`StaffNameFamily` varchar(100) collate latin1_general_ci NOT NULL,
`StaffNameSuffix` varchar(20) collate latin1_general_ci NOT NULL,
`StaffTitle` varchar(100) collate latin1_general_ci NOT NULL,
`StaffGroup` int(5) NOT NULL default '0',
`StaffBio` text collate latin1_general_ci NOT NULL,
`StaffPhotoPath` varchar(250) collate latin1_general_ci NOT NULL,
`SortOrder` int(3) NOT NULL default '50',
PRIMARY KEY (`StaffId`)
) ENGINE=MyISAM AUTO_INCREMENT=12 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci AUTO_INCREMENT=12 ;

INSERT INTO `sample_StaffInfo` VALUES (2, 'Mrs.', 'Sally', 'Johnson', 'RN', '', 3, '', '', 50);
INSERT INTO `sample_StaffInfo` VALUES (3, 'Mr.', 'John', 'Smith', 'MD', '', 1, '', '', 50);
INSERT INTO `sample_StaffInfo` VALUES (4, '', 'Aaa', 'Aaa', '', '', 3, '', '', 50);
INSERT INTO `sample_StaffInfo` VALUES (5, '', 'Bbb', 'Bbb', '', '', 3, '', '', 50);
INSERT INTO `sample_StaffInfo` VALUES (6, '', 'Ccc', 'Ccc', '', '', 3, '', '', 50);
INSERT INTO `sample_StaffInfo` VALUES (7, '', 'Ddd', 'Ddd', '', '', 3, '', '', 50);
INSERT INTO `sample_StaffInfo` VALUES (8, '', 'Eee', 'Eee', '', '', 1, '', '', 50);
INSERT INTO `sample_StaffInfo` VALUES (9, '', 'Fff', 'Fff', '', '', 1, '', '', 50);
INSERT INTO `sample_StaffInfo` VALUES (10, '', 'Ggg', 'Ggg', '', '', 2, '', '', 50);
INSERT INTO `sample_StaffInfo` VALUES (11, '', 'Hhh', 'Hhh', '', '', 3, '', '', 50);

LifeinAsia

5:16 pm on Apr 16, 2009 (gmt 0)

WebmasterWorld Administrator 10+ Year Member Top Contributors Of The Month



What happens if you remove "GROUP BY Grp.GroupName" from your query?

techtheatre

4:21 am on Apr 17, 2009 (gmt 0)

10+ Year Member



That did it. Thanks! I guess i was doubling up on that part :-)