我想这或多或少是一件微不足道的事情,但是在这里...
我的关系表很少,我想根据2个值检索行。到目前为止,这是我的查询:
SELECT `inventory`.*, `tags`.*, `tags_inv`.*, `categories`.*, `categories_inv`.*
FROM (`tags`)
LEFT JOIN `tags_inv` ON `tags_inv`.`tag_id` = `tags`.`tag_id`
LEFT JOIN `inventory` ON `inventory`.`inventory_id` = `tags_inv`.`inv_id`
LEFT JOIN `categories_inv` ON `categories_inv`.`inv_id` = `inventory`.`inventory_id`
LEFT JOIN `categories` ON `categories`.`cat_id` = `categories_inv`.`cat_id`
WHERE `categories`.`cat_id` = 1
AND `inventory`.`inv_name` LIKE '%p%'
OR `inventory`.`inv_dim_w` LIKE '%p%'
OR `inventory`.`inv_dim_l` LIKE '%p%'
OR `inventory`.`inv_dim_h` LIKE '%p%'
OR `tags`.`tag_description` LIKE '%p%'
ORDER BY `inventory`.`inv_name`
问题是我的查询从数据库中选择了所有内容(就像忽略
cat_id
),但是在这种情况下,我只想选择cat_id
为1的行...有没有快速合理的方法来解决此问题? :)
提前致谢!
最佳答案
在WHERE子句中使用括号将所有OR条件组合在一起。因为您在WHERE中的AND和OR处于同一级别,所以它忽略了所有OR分支的cat_id = 1过滤器。
关于mysql - MySQL查询关系表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6862369/