我有一个数据库与不同颜色的卡片。SQL:使颜色表的颜色可搜索
一张卡片可 “无色” 或一种或多种颜色: “红”, “绿色”, “白”, “蓝”, “黑”
的卡处于卡表与ID,名称和一些其他的卡信息,
和颜色处于色表与名(比如: “红”),彩色码(例如: “R”)和彩色ID
并有连接表与card_id的和COLOR_ID
所以问题是如何使颜色搜索?
我希望能够找到所有的卡都“只红”,
藏汉作为是“红色或蓝色”是“红色和蓝色的所有卡,
和所有卡“(与同为3,4和5种颜色!)
有30个不同的颜色的组合:
//000001//000010//000011//000100//000101//000110//000111
//001000//001001//001010//001011//001100//001101//001111
//010000//010001//010010//010011//010100//010101//010110
//010111//011000//011001//011010//011011//011100//011101
//011111
//100000 (Colorless)
我发现吨帽子这是可以与联盟但
人必须使所有30个不同的组合,然后联合他们所有在一起!
SELECT
c.id
'false' AS Colors,
'true' AS Red,
'false' AS Blue
'false' AS Green
'false' AS White
'false' AS Black
'false' AS Colorless
FROM cards_data AS c
INNER JOIN con_cards_colors AS ccc_red ON c.id = ccc_red.cards_id
INNER JOIN colors AS co_red ON co_red.id = ccc_red.colors_id
WHERE
co_red.name = "Red"
Union
(...)
这dosnt似乎是一个很好的解决方案!
那么,任何idears将不胜感激?
(最优我喜欢某种SQL视图的..)
在我意见“无色”不应该是一种颜色,而是颜色的缺失。否则,例如可以制作无色和红色的卡片。 –
#Thorsten:我同意,这只是数据库的制作方式,因为这些卡片来自JSON表示,它具有无色.. –