2012-02-05 173 views
0

我试图从表格代理机构中选择数据,该代理机构在某个承运人的佣金表中输入数据。我的SQL查询返回所有条目和3次。我究竟做错了什么。MySQL左连接不工作

$allquery = mysql_query("SELECT agency.ID, agency.agencyname, agency.contdate, agency.physcity FROM agency LEFT JOIN commission ON commission.repnum = agency.repid WHERE agency.repid = '$repid' AND commission.repnum = '$repid' AND commission.carrier = 'Carrier' ")or die(mysql_error()) 

回答

4

除非您实际指定了涉及每个表的列的连接标准,否则您不会连接两个表。

SELECT agency.ID, agency.agencyname, agency.contdate, agency.physcity 
FROM agency LEFT JOIN commission ON commision.repid = agency.repid AND commission.carrier = 'Carrier' 
+0

感谢的是,我不知道我在做什么,我在上面编辑,其仍然检索所有条目,并3次每。它喜欢它忽略我的WHERE子句。尝试了一个左内连接。 – savagenoob 2012-02-05 04:30:18

+0

没关系。我知道了。需要做一个ON commission.agencyid = agency.ID。我累了。 +1 – savagenoob 2012-02-05 04:42:18

+0

但是您没有理由指定AND commission.repnum ='$ repid'。由于不清楚你的表格结构或数据是什么,所以我们只能猜测这一点。据说,左外连接返回所有行。左连接的属性是,您将在“左”表中的每一行获得一行,即“左连接”子句左侧的表。在这种情况下,这是机构。无论在commision中是否找到匹配的行,您都会得到一行。 – gview 2012-02-05 04:42:30

0

问:如果您想引用“佣金”中的元素,为什么不使用内连接?

问:你为什么要做一个连接?我不明白“佣金”与“代理”有何联系。 “佣金”也有“repid”字段吗?

总之,根据你已经证明什么,我建议这样的:

SELECT ID, agencyname, contdate, physcity 
FROM agency 
where repid = '$repid'