我写了一个查询,搜索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);
有什么想法吗?
答案 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}}。
但也许这不是你遇到的问题。如果你能提供你得到的输出和你期望获得的输出,那将有所帮助。