-1

我确信有办法做到这一点,但我不知道怎么做。

我有一个分类项目表:

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

我需要在服务表上进行选择以查找特定于给定项目的服务。它应该始终返回非排他性且非特定类别的服务。当 id_category 为空时,它还应该只返回与其类别相关的独家服务。

所以“项目一”的查询应该返回

Basic Service
Advanced Service

并且“第二项”应该返回

Basic Service
Super Service

谁能帮我这个 ?

4

1 回答 1

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

于 2012-11-09T15:44:37.753 回答