假设表1为
CREATE TABLE `airways` (
`objID` int(11) NOT NULL AUTO_INCREMENT,
`code` char(2) NOT NULL,
`phone` varchar(50) NOT NULL,
`ticketType` int(1) NOT NULL DEFAULT '0',
`actived` tinyint(1) NOT NULL,
`lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`objID`),
UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='机型信息'表2为
CREATE TABLE `airwaysmult` (
`objID` int(11) NOT NULL AUTO_INCREMENT,
`langID` varchar(100) NOT NULL,
`belongToID` int(11) NOT NULL,
`airwaysname` varchar(255) DEFAULT '',
`abbreviation` varchar(50) DEFAULT '',
PRIMARY KEY (`objID`),
KEY `belongToID` (`belongToID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='航空公司多语言信息'
联合查询语句如下
select a.*,am.airwaysname from `airways` a left join `airwaysmult` am on a.objID = belongToID where am.langID='zh'这个当airways对应的airwaysmult表中只有EN而没有ZH的时候将得不到airways的数据有没有办法当airwaysmult中不存在langID数据也可以得倒对应的airways中的数据,am.airwaysname数据补null
在线等======
CREATE TABLE `airways` (
`objID` int(11) NOT NULL AUTO_INCREMENT,
`code` char(2) NOT NULL,
`phone` varchar(50) NOT NULL,
`ticketType` int(1) NOT NULL DEFAULT '0',
`actived` tinyint(1) NOT NULL,
`lastModified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`objID`),
UNIQUE KEY `code` (`code`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COMMENT='机型信息'表2为
CREATE TABLE `airwaysmult` (
`objID` int(11) NOT NULL AUTO_INCREMENT,
`langID` varchar(100) NOT NULL,
`belongToID` int(11) NOT NULL,
`airwaysname` varchar(255) DEFAULT '',
`abbreviation` varchar(50) DEFAULT '',
PRIMARY KEY (`objID`),
KEY `belongToID` (`belongToID`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COMMENT='航空公司多语言信息'
联合查询语句如下
select a.*,am.airwaysname from `airways` a left join `airwaysmult` am on a.objID = belongToID where am.langID='zh'这个当airways对应的airwaysmult表中只有EN而没有ZH的时候将得不到airways的数据有没有办法当airwaysmult中不存在langID数据也可以得倒对应的airways中的数据,am.airwaysname数据补null
在线等======
或者先查airwaysmult select ......from airwaysmult left join airways...........
有没有办法当airwaysmult中不存在langID数据也可以得倒对应的airways中的数据,am.airwaysname数据补null好好看一下SQL语法吧。关于没有数据补充为NULL的,这个是外连接的基本特征。select a.*,am.airwaysname from `airways` a right join `airwaysmult` am on a.objID = belongToID where am.langID='zh'那个数据补充为NULL的在RIGHT JOIN 的左边,对应的在LEFT JOIN 的右边。如果两边都想补充为NULL的话,看看FULL OUTER JION