我确信有办法做到这一点,但我无法看到。
我有一个分类的项目表:
table items
(
item_name
id_category
)
- item list -
"Item one", 1
"Item two", 2
"Item three", 3
table service
(
service_name
exclusive
id_category
)
- service list -
"Basic service", 0, null
"Advanced service", 1, null
"Super service", 1, 2
我需要在服务表上执行select以查找特定于给定项的服务。 它应始终返回不是独占的服务,而不是特定于类别的服务。 它应该只返回与其类别相关的独占服务或当id_category为空时。
所以“第一项”的查询应该返回
Basic Service
Advanced Service
和“第二项”应该返回
Basic Service
Super Service
任何人都可以帮我吗?
答案 0 :(得分:0)
你需要一个UNION
(SELECT `service_name` FROM `service` WHERE `exclusive`='0')
UNION
(SELECT IFNULL(`service`.`service_name`,(SELECT `service_name` FROM `service` WHERE `exclusive`='0' AND `id_category` IS NULL)) FROM `items` LEFT JOIN `service` ON `items`.`id_category`=`service`.`id_category` WHERE `items`.`name`='Item one')
第二个查询的WHERE子句可能不同。我假设您按项目名称搜索