选择回退到基本项目的查询

时间:2012-11-09 15:28:08

标签: mysql select

我确信有办法做到这一点,但我无法看到。

我有一个分类的项目表:

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

任何人都可以帮我吗?

1 个答案:

答案 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子句可能不同。我假设您按项目名称搜索