我有桌子:
id id_products id_atribut name value
1 13 8 autdio 2.1
2 13 9 hdd 200 Gb
3 13 10 cd-rom 2
4 20 8 audio 2.1
问题是,如何从此表中选择name="audio"
和value="2.1"
以及name="hdd"
和value="200 gb"
并返回id_products=13
.... < / p>
我该怎么做?
答案 0 :(得分:2)
我认为您想要的是根据属性值查询您的表格,因此您希望搜索属性audio
等于2.1
且属性hdd
等于{{}的产品1}}。在您的示例中,它应返回产品200 Gb
。
您可以通过使用不同的别名多次连接同一个表来完成此操作。
以下示例假设您有一个包含您的产品的表13
,并且您向我们展示的表名为products
product_attributes
如果要动态更改要在查询中使用的属性,则必须在执行查询之前自己生成查询。
答案 1 :(得分:0)
Em ......喜欢这个?或者你想要什么?
SELECT * FROM table
WHERE
id_products=13 and name="audio" and value="2.1" and name="hdd" and value="200 gb"
答案 2 :(得分:0)
我的猜测是,您想要的实际上是使用
选择所有行SELECT * FROM table
但是,您也可以在语句中引用变量用于测试目的
示例:
SET @var_name = expr [, @var_name = expr] ...
For SET, either = or := can be used as the assignment operator.
您还可以在除以外的语句中为用户变量赋值 组。在这种情况下,分配 运算符必须是:=而不是=因为 =被视为非SET语句中的比较运算符:
然后你按如下方式使用它们:
SET @t1='audio';
mysql> SELECT @t1 FROM table;
通过这种方式,您将始终获得相同的搜索结果,并且可以根据需要使用该变量。我还注意到你的音频拼写不是autdio
,我能否认为这是一个错字。这里最大的猜测是你要从表中选择所有内容来查看它,比如发布的第一个代码,或者你只想选择关键字段。
如果您选择SELECT * FROM tablename WHERE id_products=13 AND name="audio" AND value="2.1" AND name="hdd" AND value="200 gb"
,问题仍然是您从未在数据库中获得符合此条件的任何行。