我有一张类似于的表: 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 product
t1 JOIN product
t2 ON(t2.name = t1.name)WHERE t1.name ='$ name'AND t1.name!='0' “;
问题在于我不知道如何实现我需要的结果,我的意思是达到的方式(以及代码......,但这将是一个不同的问题!)
EDIT 我没有提到我发现的更接近我需要的解决方案,即:
SELECT product.name
FROM product
INNER JOIN (
SELECT product.name
FROM product
WHERE product.code = var1
) pname ON pname.name = product.name
问题在于,它显示了具有该名称的所有产品,包括活动产品。所以我也无法将同名的IF'产品存在'Echo the parent DIV ...
答案 0 :(得分:0)
我认为code
是您产品的唯一键。好吧,首先我猜你在第一个语句的结果中已经得到了产品的名称,所以也许你可以在第二个查询中重用它,就像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
标识产品是错误的,而且此解决方案可能根本不起作用。< / p>