0

次のようなテーブルがあります: product_id - code - name - img - ...

全商品を紹介するページを作りました。いずれかをクリックすると、その商品の詳細ページに移動します。">

詳細ページの最初の部分には、選択したコードを参照するすべてのデータがあり、これは正しく機能しています。

$var1_getProduct = "unavailable";
if (isset($_GET['code'])) {
$var1_getProduct = $_GET['code'];
}
...
$query_getProduct = sprintf("SELECT * FROM product WHERE product.code = %s", GetSQLValueString($var1_getProduct, "text"));

ページの下部に、同じ名前の他のすべての製品を表示したいと思います。同様のtrilを作成しましたが、誰も機能していないようで、これにどう対処すればよいかわかりません...

別のクエリを作成する必要がありますか? 試してみましたがうまくいきませんでした... $query_getProducts = "SELECT * FROM product WHERE product.code = getProducts['code']"

または、2 つの異なるテーブルの場合のように、テーブル自体に参加しようとする必要がありますか? これもうまくいきませんでした... $query_getProducts = "SELECT t2.name FROM productt1 JOIN productt2 ON (t2.name = t1.name) WHERE t1.name = '$name' AND t1.name != '0'" ;

問題は、必要な結果を達成する方法がわからないということです。つまり、到達する方法を意味します(コードも...ですが、それは別の問題になります!)

編集私が見つけた解決策については言及しませんでしたが、それは私が必要とするものにもっと近いものです:

SELECT product.name
FROM product 
INNER JOIN ( 
SELECT product.name
FROM product
WHERE product.code = var1 
) pname ON pname.name = product.name

これの問題は、アクティブなものを含め、その名前のすべての製品が表示されることです。そのため、「同じ名前の製品が存在する」というIFを置くこともできません。親DIVをエコー...

4

1 に答える 1

0

あなたcodeの製品の一意のキーだと思います。最初に、最初のステートメントの結果で既に製品の名前を取得していると思います。そのため、2 番目のクエリで のようなものとして再利用できますselect * from product where name='%s' and code!='%s'。これができない場合は、次のようにサブクエリで名前をフェッチするとうまくいく可能性があります。

select * from product 
    where name = (select name from product where code='%s')
    and code != '%s';

から複数の結果が得られた場合はselect name from product where code='%s'、おそらく使用できますwhere name in (select name from product where code='%s')が、製品を特定する私の仮定codeは間違っており、このソリューションはまったく機能しない可能性があります.

于 2013-02-07T18:57:37.690 に答える