我有如下表格,
CREATE TABLE `CreateEvent_tbl` (
`Event_Id` varchar(10) NOT NULL,
`State` varchar(25) DEFAULT NULL,
`District` varchar(35) DEFAULT NULL,
`School` varchar(150) DEFAULT NULL,
`Event_Date` date DEFAULT NULL,
`Created_By` varchar(35) DEFAULT NULL,
`Created_Date_Time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`Event_Id`)
CREATE TABLE `StudentDetails_tbl` (
`Student_Id` varchar(15) NOT NULL,
`Event_Id` varchar(10) DEFAULT NULL,
`Student_Name` varchar(45) DEFAULT NULL,
`Parents_Name` varchar(90) DEFAULT NULL,
`Std_Ph_No` varchar(25) DEFAULT NULL,
`Ph_No_1` varchar(25) DEFAULT NULL,
`Ph_No_2` varchar(25) DEFAULT NULL,
`Email_Id` varchar(50) DEFAULT NULL,
`Address` varchar(250) DEFAULT NULL,
`Created_By` varchar(25) DEFAULT NULL,
`Created_Date_Time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`Student_Id`)
CREATE TABLE `BuyerDetails_tbl` (
`Event_Id` varchar(10) DEFAULT NULL,
`Student_Id` varchar(15) DEFAULT NULL,
`Call_Buy_Id` varchar(10) DEFAULT NULL,
`Buyer_Id` varchar(10) NOT NULL,
`Purchased_Date` date DEFAULT NULL,
`No_Of_Reference` int(11) DEFAULT NULL,
`Created_By` varchar(45) DEFAULT NULL,
`Created_Date_Time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`Buyer_Id`)
我的查询是:
select CreateEvent_tbl.Event_Id,CreateEvent_tbl.State,StudentDetails_tbl.Student_Id,StudentDetails_tbl.Student_Name,BuyerDetails_tbl.Purchased_Date
from CreateEvent_tbl
inner join BuyerDetails_tbl on CreateEvent_tbl.Event_Id=BuyerDetails_tbl.Event_Id
inner join StudentDetails_tbl on StudentDetails_tbl.Student_Id=BuyerDetails_tbl.Student_Id
where BuyerDetails_tbl.Buyer_Id="B045";
当我从BuyerDetails_tbl搜索Buyer_Id时,显示StudentDetails_tbl中的StudentDetails和EventDetails以及BuyerDetails_tbl中Student_Id和Event_Id的CreateEvent_tbl。
但是上面的查询无效,没有显示任何内容。
我哪里错了?
注意:我是加入查询的新手。
答案 0 :(得分:1)
由于您正在寻找特定的买家,我会从列表中的第一个开始,然后加入另外两个。另外,为了缩短查询的可读性,请注意"别名"表名称(通过" ce"," sd"和#34; bd")与所有列名称和联接的长表名称相对应。
select
ce.Event_Id,
ce.State,
sd.Student_Id,
sd.Student_Name,
bd.Purchased_Date
from
BuyerDetails_tbl bd
inner join CreateEvent_tbl ce
on bd.Event_Id = ce.Event_Id
inner join StudentDetails_tbl sd
on bd.Student_Id = sd.Student_Id
where
bd.Buyer_Id = "B045";
我会根据查询条件和连接条件确保您拥有适当的索引。
BuyerDetails_tbl - 索引(buyer_id)以优化您的WHERE标准。