我有此FF表稱爲設備 SELECT CASE:使用基於恆定值
+----------+----------+-----------+-------------+----------+---------+
| equip_id | chara_id | weapon_id | headgear_id | armor_id | ring_id |
+----------+----------+-----------+-------------+----------+---------+
| 3 | 1 | 3 | 5 | 9 | 8 |
| 5 | 3 | 3 | 5 | 3 | 8 |
| 6 | 4 | 7 | 5 | 3 | 8 |
| 7 | 5 | 4 | 5 | 3 | 8 |
| 8 | 6 | 3 | 5 | 2 | 8 |
| 10 | 8 | 3 | 5 | 2 | 8 |
+----------+----------+-----------+-------------+----------+---------+
,我有這麼長的case語句:
switch ($equip->item_type) {
case '1':
# Weapon
$sql_equip = "UPDATE equipment SET weapon_id = :item_id WHERE chara_id = :chara_id";
break;
case '2':
# Armor
$sql_equip = "UPDATE equipment SET armor_id = :item_id WHERE chara_id = :chara_id";
break;
case '3':
# Ring
$sql_equip = "UPDATE equipment SET ring_id = :item_id WHERE chara_id = :chara_id";
break;
case '4':
# Headgear
$sql_equip = "UPDATE equipment SET headgear_id = :item_id WHERE chara_id = :chara_id";
break;
default:
# do nothing...
break;
}
我在網上看到一些查詢你可以在你的查詢中使用case語句,我搜索了網絡,我似乎找不到一個正確的使用。
我希望它在1語句中,因爲我將它包裝在一個事務函數中,並且還會添加另一行mysql語句。所以,而不是做4x2(當前)我只會做2(如果這可以在1查詢中完成)mysql查詢。
@PeterLang它已經標準化。 – 2013-05-03 09:17:58
你應該考慮改變你的表模型。既然你已經使用item_type和item_id,爲什麼不用這種風格創建你的表呢?當你的當前模型強制你改變表和代碼,每當一個新的項目類型(鞋,第二個武器,第二環)被添加... – 2013-05-03 09:22:40
@YourCommonSense:好的,改變了我的評論。 – 2013-05-03 09:23:13