Mysql 如何与where条件进行内部连接
我有下面这样的桌子Mysql 如何与where条件进行内部连接,mysql,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
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\u tbl按买家Id搜索时,显示StudentDetails\u tbl和CreateEvent\u tbl中的StudentDetails和EventDetails,其中Student\u Id和Event\u Id在BuyerDetails\u tbl中
但上面的查询不起作用,没有显示任何内容
我错在哪里
注意:我是新加入查询的。因为您正在寻找一个特定的买家,我将从列表中的第一个表开始,然后加入其他两个表。另外,为了缩短查询的可读性,请注意通过ce、sd和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\u tbl-对买家id进行索引以优化您的WHERE标准。这不是实际尝试的select-其中有额外的`,导致语法无效!确保逐字发布实际代码。在任何情况下,可能只是没有匹配的数据?如果删除了WHERE,会发生什么情况?是否有结果?若有,原因为何?这和加入没有任何关系。如果不删除其中一个联接,是否有预期的结果?重复此过程,即对自己的问题进行故障排除,直到确定实际原因。如果原因是孤立的,那么问一个问题-提供更多上下文。@user2864740显示正确的结果,如果我删除where。但我想通过使用买方Id来过滤结果,那么我该怎么做呢?那么很可能没有Id为B045的买方。确保输出中存在这样一行,但不包含WHERE。可能是BO45吗?或者,可能是字符填充或空格的问题。若要查看是否是这种情况并修复它,请尝试:where trimbuerdetails\u tbl.Buyer\u Id=B045。@user2864740抱歉,我现在得到了正确的错误,在“where子句”中显示未知列“B045”。现在该怎么办?使用正确的MySQL引号,如图所示-尽管“B045”也可以工作,并且根据SQL标准是正确的。该错误是由于未使用任何错误的引号导致的:其中..=B045或使用`标识符引号错误:其中..=`B045`。