我在表格中有产品详情,比如products
,不同表格中的类别和品牌名称为categories
和brand
。我想在查询中加入这些内容。我使用的查询是,
$sql = "
SELECT p.pid
, p.name
, p.slug
, p.category
, c.name
, p.brand
, b.name
FROM products p
JOIN categories c
ON c.sno = p.category
JOIN brand
ON b.sno = p.brand
WHERE p.sku=?
";
此查询不返回任何行。但是,产品,类别和品牌表中都有数据。
我的查询中是否有任何逻辑错误?
产品表
分类表
品牌表
答案 0 :(得分:2)
评论时间有点长。
对于您显示的数据,您的查询应该有效。我首先删除where
子句并运行:
SELECT products.pid, products.name, products.slug, products.category, categories.name, products.brand, brand.name
FROM `products`
INNER JOIN `categories` on products.category = categories.sno
INNER JOIN `brand` on products.brand = brand.sno ;
(您应该直接在数据库上运行;如果有大量数据,只需输入limit 100
即可查看是否有任何数据。)
如果这不返回任何内容,则表示联接有问题。查看字段的类型。它们是一样的吗?如果没有,请修复数据结构。如果它们是字符,请检查前导空格和隐藏字符。
如果该查询返回您期望的内容,则问题与skus匹配。最可能的问题是在php中赋值。检查这是否真的做你想要的。再次检查sku
列和值中的前导空格。如果这是问题,您可以使用trim()
来解决问题。