[英]Mysql select value of the key from single field of table having multiple key-value pairs
我有這樣的表:
服務:
+----+-----------+------------+-------------+
| id | name | service_id | description |
+----+-----------+------------+-------------+
| 1 | CHAT | 1 | |
| 2 | SMS | 1 | |
+----+-----------+------------+-------------+
service_features:
+----+------------+------------+-------------+
| id | service_id | name | description |
+----+------------+------------+-------------+
|10 | 1 | Audio | |
|20 | 1 | Video | |
|30 | 2 | BULKSMS | |
+----+------------+------------+-------------+
client_services:
+----+-----------+------------+----------------------------------+---------------------------------------------+
| id | client_id | service_id |service_features_id |service_values |
+----+-----------+------------+----------------------------------+---------------------------------------------+
|100 | 1000 | 1 |features:{10:enable, 20:disable} |values:{data_transfer:102400, quota:204800} |
|200 | 1001 | 2 |features:{30:enable} |values:{total_sms:100000, users:800} |
|300 | 1001 | 1 |features:{10:disable, 20:enable} |values:{quota:204800} |
+----+-----------+------------+----------------------------------+---------------------------------------------+
現在我只想從mysql select查詢中獲取任何關鍵字的服務值,例如data_transfer或client_id 1000的配額。 答案應該分別是102400或204800
有沒有更好的方法來正規化表或存儲信息。 請提出建議。
絕對有更好的方法。 您的架構需要另外兩個表client_services_features
和client_services_values
,而不是client_services
。 client_services_features
具有以下列:
並且client_services_values
具有以下列:
每當您發現一個表結構將事物列表保持在一行中時,通常都希望為該列表創建一個單獨的表。 當列表包含ID時,您總是想為該列表創建一個單獨的表。
在列中存儲值列表,json或xml使得查詢特定數據非常困難。 通常最好將數據分成單獨的行。
我還要另外兩個桌子
client_services_values:
+----+-----------+------------+---------------------------------+
| id | client_id | service_id |service_type | service_value |
+----+-----------+------------+---------------------------------+
|1 | 1000 | 1 |data_transfer | 102400 |
|2 | 1000 | 1 |quota | 204800 |
|3 | 1001 | 2 |total_sms | 100000 |
|4 | 1001 | 2 |users | 800 |
|5 | 1001 | 1 |quota | 204800 |
+----+-----------+------------+---------------------------------+
和client_features
+----+-----------+------------+-----------------+
| id | client_id | feature_id | feature_value |
+----+-----------+------------+-----------------+
|1 | 1000 | 10 |enable |
|2 | 1000 | 20 |disable |
|3 | 1001 | 30 |enable |
|4 | 1001 | 10 |disable |
|5 | 1001 | 20 |enable |
+----+-----------+------------+-----------------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.