这是我用来从我的数据库中获取数据的查询
SELECT
product_description.name as name,
product.image as iurl
FROM
product_description, product
WHERE
product_description.product_id = product.product_id
AND product.product_id
AND product.product_id = '33';
为什么这个查询会产生双重结果?
我想通过存储在数据库中的多个值 (id) 自动搜索,而不是手动添加
AND product.product_id='?'
部分。值以序列化形式存储。
有点像
... AND product.product_id in (setting.value WHERE key='featured');
我知道查询不正确,只是想显示我想要的。
表格“设置”:
value | key
-------------------
23,43,28 | featured
最佳答案
解决方案
要获取存储在 settings
表中的所有 products
的详细信息(逗号分隔),您可以使用 FIND_IN_SET()
SELECT
product_description.description,
product.name,
product.id
FROM
product_description, product
WHERE
product_description.id = product.id
AND FIND_IN_SET(product.id, ( SELECT value FROM setting where `key` = 'featured' ) );
注意:您看到重复条目的原因可能是因为特定产品有多个描述选项,您可以使用 GROUP_CONCAT 处理此问题 以下应该有效
结语
你的数据库设计不好,应该是这样的
product -- All my products go here
product_details -- Details of all the products ( A product could have multiple details)
categories -- eg: Featured, Seasonal
product_categories -- association of product to categories
关于php - 按序列化值搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16000391/