アフィリエイトプログラムのデータフィードスクリプトを作成していて、本当に "やっている"と思っていましたが、スクリプトを実行すると、28の製品のうち7つでCSVファイルが作成されます。テストに先立って、私はすべての製品をクエリの条件を満たすようにして、すべてを含める必要がありました。在庫レベルと価格条件も削除しました。それでも28のうち7つだけが、1つのカテゴリからcsvファイル5に追加され、2つのカテゴリから追加されます。最初のカテゴリにはわずか5つの製品しかなく、すべてが返されます。しかし、2番目のカテゴリーの23のうちの2つだけが返されます。私のMySQL Queryが28レコードのうち7レコードしか返さないのはなぜですか?
ゴールは、クエリ内のカテゴリからすべての製品の特定のデータを取得し、それらをcsvファイルにダンプすることです。
これは私の初めての(初心者のための)より複雑なSQLクエリを書くことを試みることです。
print_rを使用して、私の問題が私のクエリであることがわかりました。私はこれが以前に働いていたと思った。それが今働いていた時と今の時の違いは、categoryidとcatparentidをつかむことです。しかし、これらの追加を削除しても、私はまだ同じ結果を得ています。今私は、それが以前の私のより大きいデータベースのデータベース上で動作していると思っていたかもしれないと思っていますが、おそらく実際にはすべての製品を返すわけではありませんでした。
完全なスクリプトはかなり長いですが、クエリがすべてのレコードを取得しているかどうかを確認するために新しいスクリプトを作成しました...そうではありません。 :(
私が関連付けられていない製品(なしカテゴリの関連付けを持たない、すなわちもの)をチェックするためのクエリを実行する場合は、すべての製品は、カテゴリに関連付けされている。
製品のすべての画像&ブランドの関連性を持っているIドンそう「がtはそれがいずれかの問題だと思う
を、私は完全にWhere句を削除しても、唯一の7つの製品が手にしている私は、データベース内で直接クエリを実行し、同じことだ
:。。
をShowing rows 0 - 6 (7 total, Query took 0.0029 sec)
SELECT isc_products.productid, isc_products.prodcode, isc_products.prodname, isc_products.produrl, isc_products.prodcalculatedprice, isc_products.proddesc, isc_products.prodcurrentinv, isc_products.upc, isc_categories.categoryid, isc_categories.catparentid, isc_categories.catname, isc_product_images.imagefilestd, isc_product_images.imagefilethumb, isc_brands.brandname
FROM isc_products
INNER JOIN isc_categories ON isc_products.prodcatids = isc_categories.categoryid
INNER JOIN isc_product_images ON isc_products.productid = isc_product_images.imageprodid
INNER JOIN isc_brands ON isc_products.prodbrandid = isc_brands.brandid
WHERE isc_categories.categoryid =10
OR isc_categories.categoryid =12
この問題の原因となる特殊文字がデータに存在する可能性がありますか?
内部結合を誤って使用していますか?
<pre>
<?php
// Make a MySQL Connection
mysql_connect("localhost", "myusername", "mypassword") or die(mysql_error());
mysql_select_db("mydatabase") or die(mysql_error());
$result = mysql_query("SELECT isc_products.productid,
isc_products.prodcode,
isc_products.prodname,
isc_products.produrl,
isc_products.prodcalculatedprice,
isc_products.proddesc,
isc_products.prodcurrentinv,
isc_products.upc,
isc_categories.categoryid,
isc_categories.catparentid,
isc_categories.catname,
isc_product_images.imagefilestd,
isc_product_images.imagefilethumb,
isc_brands.brandname
FROM isc_products
INNER JOIN isc_categories
ON isc_products.prodcatids = isc_categories.categoryid
INNER JOIN isc_product_images
ON isc_products.productid = isc_product_images.imageprodid
INNER JOIN isc_brands
ON isc_products.prodbrandid = isc_brands.brandid
WHERE isc_categories.categoryid = 17
OR isc_categories.categoryid = 15
OR isc_categories.categoryid = 16
OR isc_categories.categoryid = 12
OR isc_categories.categoryid = 13
OR isc_categories.categoryid = 14
OR isc_categories.categoryid = 11
OR isc_categories.categoryid = 10
AND isc_products.prodcurrentinv > 1
AND isc_products.prodcalculatedprice > 1.00
ORDER BY isc_categories.catname
")
or die(mysql_error());
while($row = mysql_fetch_array($result)){
print_r ($row);
}
// end of file
echo '<br/>****** Script successfully run! ******';
?>
</pre>
これについてのご意見はありがたいです。 免責事項あなたの最初の考えが「なぜあなたはしていないのですか?」と思っているのなら、それは私がそれを知らなかったか、知らなかったからです。 :)ある日、私の友人...ある日私はします。ハハハ
ありがとう!
データまたは少なくともスキーマを表示する必要があります。 –