用于搜索间隙的SQL

时间:2015-02-11 18:05:08

标签: php magento

我写了一个查询,搜索Magento中sku数字的间隙。它在PHPAdmin中工作得很好,但是当我在php页面中测试它时返回空。

    $dbread = Mage::getSingleton('core/resource')->getConnection('core_read');
$strSQL="SELECT * 
FROM catalog_product_entity
LEFT JOIN catalog_product_entity AS t2 ON CAST( t2.sku AS UNSIGNED ) = CAST( catalog_product_entity.sku AS UNSIGNED ) +1
WHERE t2.sku IS NULL 
AND CAST( catalog_product_entity.sku AS UNSIGNED ) >100000
LIMIT 1";
$sql = $dbread->query($strSQL);
$res = $sql->fetchAll();
var_dump($res);

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我制作了一个测试表并运行了你的代码。当我这样做时,我得到了一个以NULL为其中的数组作为输出。我将代码调整为:

$dbread = Mage::getSingleton('core/resource')->getConnection('core_read');
$strSQL="SELECT t1.sku 
FROM catalog_product_entity t1
LEFT JOIN catalog_product_entity AS t2 ON CAST( t2.sku AS UNSIGNED ) = CAST( t1.sku AS UNSIGNED ) +1
WHERE t2.sku IS NULL 
AND CAST( t1.sku AS UNSIGNED ) >100000
LIMIT 1";
$sql = $dbread->query($strSQL);
$res = $sql->fetchAll();
var_dump($res);

并且能够获得正确的结果。我不确切地知道原因,但我假设与SELECT *混合的var_dump导致它只返回NULL t2中的字段。由于您只需要sku中的最后一个t1,因此没有理由退回剩下的{{1}}。

但也许这不是你遇到的问题。如果你能提供你得到的输出和你期望获得的输出,那将有所帮助。