如何使用where条件进行内连接

时间:2014-08-30 04:42:28

标签: mysql

我有如下表格,

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。

但是上面的查询无效,没有显示任何内容。

我哪里错了?

注意:我是加入查询的新手。

1 个答案:

答案 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标准。