2011-11-23 83 views
-3

我想要一個SQL查詢,更新一次,然後死亡。Sql更新一次然後死

更新是適用於一個行(其中用戶ID = X)

我想OFF改變用戶之一爲ON(只有一個)

所以數據庫是

user | monday | tuesday | wednesday | thurs | fri | sat | xmas | easter | etc 
1 | off  | hols | on  | off | on | x | on | sick | etc 

mysql_query("UPDATE shifts SET ?? WHERE userID = '".$_SESSION['userID']."' ")or die("Query failed:".mysql_error()); 

所以列名是可變的,目前有超過100列

我當然希望避免更改所有的權衡,以ONS(我很高興來改變第一或最後,只是不不止一個。) (更新是通過PHP和我目前的解決方案是做一個SELECT並創建一個OFF值的數組,然後在UDATING之前在PHP中更改 - 但是這個請求額外的MYSQL查詢...)

+3

不知道你想做什麼...只改變星期三關閉,但離開星期五/聖​​誕節單獨?似乎這個表格設計有一些主要的標準化需求。 –

+0

基本上是的,改變其中一個OFFS並且使其他 – Gamemorize

+0

非常難以定期查詢。從桌面設計的標準化開始,你會好得多。 –

回答

0

只需使用LIMIT條款。

UPDATE table SET column='value' WHERE condition='value' LIMIT 1

+0

哦,我讀了LIMIT是爲行 – Gamemorize

+0

你正在更新行... – ceejayoz

+0

但不會改變所有= OFF = ON的值? – Gamemorize

0

通常的方法是簡單地建立起來的查詢字符串 僞代碼!

qry = "Update Table Set " + NameValuesDelimited + " Where ...." 

NameValues僅僅是一個「列1 = 0」,「列2 = 2」,並劃定放逗號給你一個SQL語句將如理解名單

Update Table Set C1 = 0, c2 = 6, c9 = 8 Where KeyName = 44 
+0

謝謝,我一直在尋找僞代碼的想法,並給予列的數量,以及我缺乏專業知識,我認爲這件事我可以稍後看 - 陣列解決方案將不得不代表時間 – Gamemorize