有沒有辦法讓一列等於不同表中所有行的計數,其中id =當前行中的一列?有一列等於另一個表的數量嗎?
例如。
- 表1有列:ID,算上
- 表2具有列ID,table1_id
我想table1.count自動填充行的表2中的量,其中table2.table1_id = table1.id
(它的父母子女有一個關係)。
很明顯,我可以用php做這個,我只是覺得這會比每次頁面加載時不斷用這個php重新計算這個速度更快。謝謝。
有沒有辦法讓一列等於不同表中所有行的計數,其中id =當前行中的一列?有一列等於另一個表的數量嗎?
例如。
我想table1.count自動填充行的表2中的量,其中table2.table1_id = table1.id
(它的父母子女有一個關係)。
很明顯,我可以用php做這個,我只是覺得這會比每次頁面加載時不斷用這個php重新計算這個速度更快。謝謝。
使用視圖和一張桌子table1_data
,你可以這樣做:
CREATE VIEW table1 AS
SELECT table1_data.*, COUNT(*) AS count
FROM table1_data, table2
WHERE table1_data.id = table2.table1_id
GROUP BY table1_data.id
這將需要的所有數據從table1_data
開始,按照您的描述添加列count
,並將結果顯示爲可在大多數情況下用作表格的視圖。
假設table1.id
是一個獨特的鍵,就可以執行以下操作:
REPLACE INTO table1 (id, count)
SELECT table1_id, COUNT(*)
FROM table2
GROUP BY table1_id
那麼它需要自動化,以便每當table2更新時,table1將更新計數 – 2012-07-09 20:05:53
當您希望自動更新時,您希望視圖不是表格。你可以從一個靜態表和一個select來構造一個視圖來添加計數。 – MvG 2012-07-09 20:08:27
問題是隻有一列是自動的,另一列沒有。 – 2012-07-09 20:09:32
您可以使用觸發器實現這種「自動」效果,當然如果您的數據庫引擎支持它們。 你需要在你的table_data,onInsert()和onDelete()上建立兩個觸發器。
另一個必須是一張桌子,它不能是一個視圖嗎? – roymustang86 2012-07-09 20:02:41
是的,一定是桌子。 Theres more to the table比我顯示的更多 – 2012-07-09 20:03:11