0

既存の opencart Web ショップ データベースからデータを取得するクエリがあります。

小さな問題は、DISTINCT を使用してローカルで解決した 2 倍の結果です。wordpress サイトでクエリをオンラインで使用するまでは、完全に機能していました。個別の使用に関係なく、結果は再び 2 倍になります。

使用方法の唯一の違いは、ローカルでは単純な php ドキュメント内で mysql() クエリを使用しましたが、オンラインでは wordpress サイドバー ファイル内で $wpdb 文を使用したことです。

データベースは同じです。

ローカル:

$preq = "
SELECT DISTINCT
    product.product_id as proid,
    product.image as proimg,
    product_description.name as proname 
FROM
    product, product_description
WHERE
    product_description.product_id = product.product_id
    AND FIND_IN_SET(product.product_id, ( SELECT value FROM setting where `key` = 'featured_product' ) )
";

if($res=mysql_query($preq)) {

while ($rss = mysql_fetch_array($res)) {

echo $rss['proid'];
echo "<br/><br/>";

}


}

オンライン:

$mydb= new wpdb(/connection info/);
            $rows = $mydb->get_results(
                "
                SELECT DISTINCT
                product.product_id as proid,
                product.image as proimg,
                product_description.name as proname 
                FROM
                product, product_description
                WHERE
                product_description.product_id = product.product_id
                AND FIND_IN_SET(product.product_id, ( SELECT value FROM setting where `key` = 'featured_product' ) )
                "
            );
            echo "<div id='fp_content'>";
            foreach ($rows as $obj) {
            echo $obj->proid;
            echo '<br/>';
            }
            echo "</div>";

重複を除いて、すべて正常に動作します。

結果:

Locally:
Values in "value" column: 28,40,42,43,46,47,49

Results:
28

40

42

43

46

47

49

----------------------

Online:
Values in "value" column: 50,51,52

Results:
50
50
51
51
52
52
4

1 に答える 1

1

クエリは、重複しない値のみを返します。

SELECT DISTINCT
     product.product_id as proid,
     product.image as proimg,
     product_description.name as proname 
FROM
     product, product_description
WHERE

ただし、フィールド product.image または product_description.name のみが異なります。

于 2013-04-16T13:29:50.763 に答える