如何显示与显示的行相同的数据的行

时间:2013-02-07 13:11:11

标签: mysql where

我有一张类似于的表: 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 ...

1 个答案:

答案 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>