2013-11-20 26 views
0

invstorelocation时查询返回完美结果。 Description不如地利,不包括在查询随着加入根据单个查询中的不同连接从不同表中获取数据

INNER JOIN 
    `invstorelocation` 
ON (`invlabtes`.`StockLocCode` = `invstorelocation`.`Code`) 

但是,当我包括此加入查询表返回空,即使所有条件得到充分满足。 Plz提到了取回位置记录以及其他记录的替代方案。

SELECT 
`invlabtes`.`CommAppCode` , 
`invlabtes`.`Code` , 
`invlabtes`.`GatePassNO` , 
`invlabtes`.`VehicleNo` , 
`invlabtes`.`SupplierCode` , 
`invstorelocation`.`Description` AS Location , 
`invstore`.`Description` AS MaterialName 
FROM 
    `invlabtes` 
INNER JOIN 
    `invstorelocation` 
ON (`invlabtes`.`StockLocCode` = `invstorelocation`.`Code`)   
INNER JOIN 
    `invgatepass` 
ON (`invlabtes`.`GatePassNO` = `invgatepass`.`InwardNo`) AND (`invlabtes`.`GatePassDate` = `invgatepass`.`EntryDate`) AND (`invlabtes`.`VehicleNo` = `invgatepass`.`VehicleNo`) 

INNER JOIN 
    `invgatepasssubtable` 
ON (`invlabtes`.`GatePassNO` = `invgatepasssubtable`.`InwardNo`) AND (`invlabtes`.`ItemCode` = `invgatepasssubtable`.`ItemCode`) 

INNER JOIN 
    `invstore` 
ON (`invgatepass`.`StoreCode` = `invstore`.`Code`) 

WHERE (`invlabtes`.`Code` LIKE '%%' OR `invlabtes`.`CommAppCode` LIKE '%%' OR `invlabtes`.`GatePassNO` LIKE '%%' OR `invlabtes`.`VehicleNo` LIKE '%%' OR `invlabtes`.`SupplierCode` LIKE '%%') AND `invlabtes`.`CommAppCode`<>'' AND `invlabtes`.`Unit_Code`='1' LIMIT 100; 

此查询成功返回数据。上面的查询有问题。

+3

你确定你知道这是什么查询该怎么办? – asprin

+0

yes此查询是根据invgatepass表和invgatepasssubtable中的匹配条目从invlabtes表和invstore表中提取数据。我也想从invstorelocation表中获取相应的位置描述 –

+2

如果没有你的数据,我们真的没有办法进行调查。我很抱歉,但如果你没有排队,那么显然所有的条件都没有完全满足。数据库不只是拒绝显示数据。条件包括连接的条件,唯一的解决方法是深入挖掘并找出添加连接时不满足条件的原因。通过改变导致它无法加入外连接并查看记录的联接可能会更容易。 – David

回答

0

以你按面值说什么,似乎不存在invstorelocation行,其中的invstorelocation.Code为您指定的限制的invlabtes.StockLocCode值相匹配。

尝试只选择invlabtes.StockLocCodeSELECT invlabtesFROM StockLocCode

然后尝试从invstorelocationSELECt Code FROM invstorelocation

检查选择Code如果任何值一致,如果他们这样做,chekc如果他们已经被WHERE过滤掉条款?

遗传性缺失的此数据难以诊断。

+0

先生PLZ再次读这个问题。 invstore在查询中没有问题。只有'invstorelocation'.'description'不返回数据。当查询在没有这个单一联接的情况下运行时,它会返回成功的匹配。只有问题是'invstorelocation' –

+0

我会相应地修改我的建议,但它是相同的建议,只是不同的表/列... –

+0

对不起,我的表名称错了,正确的名称是invunloadinglocation而不是invstorelocation。 –

0

尝试

LEFT OUTER JOIN 
`invstorelocation` 
ON (`invlabtes`.`StockLocCode` = `invstorelocation`.`Code`) 

如果使用INNER JOIN和表是空的,它会返回任何结果

+0

当我尝试你的解决方案(我在结果集中的位置字段中有空值)时它工作。但问题是表'invstorelocation'不是空的,它有相应的条目。我已经手动检查过这个。请在提及查询时提及我错在哪里,或者我在查询中犯了错误的逻辑。 –

+0

我的问题已解决现在查询成功运行 问题是 表的名称是invunloadinglocation,并且我使用了错误的名称,例如Invstorelocation Thanx给所有回复的人 –

相关问题