-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がnullの場合に返す必要があります。

したがって、「アイテム1」のクエリは

Basic Service
Advanced Service

そして「アイテム2」は戻るはずです

Basic Service
Super Service

誰かがこれで私を助けることができますか?

4

1 に答える 1

0

ユニオンが必要です

(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')

2 番目のクエリの WHERE 句は異なる場合があります。アイテム名で検索していると思います

于 2012-11-09T15:44:37.753 に答える