2014-10-20 83 views
0

我只需要一點點啓動,我有點困惑如何做到這一點。我需要做的是從表格中拉出'customer_id',看看客戶租了多少物品。如果沒有'customer_id',那麼它會返回0.我只是沒有完全掌握如何做到這一點,所以任何幫助表示讚賞。在MySQL中創建函數

創建表:

CREATE TABLE Customer 
(name VARCHAR(30) NOT NULL, 
    address VARCHAR(70), 
    phone CHAR(10) NOT NULL, 
    customer_id INT(10) PRIMARY KEY NOT NULL); 

創建功能:有這部分啓動,但不能確定,如果我做正確。

DELIMITER $$ 
CREATE FUNCTION Num_Of_Rented(IN customer_id INT(10)) 
RETURNS INT(10) 
BEGIN 
    DECLARE num INT(10); 
    SELECT IFNULL() 
    FROM 
    WHERE 
    RETURN num; 
END $$ 
DELIMITER; 
+1

這似乎是一個奇怪的使用情況爲一個功能。我假設你有一張與你的客戶表相關的表格給出租賃記錄。如果是這樣,爲什麼不簡單地查詢該表? – 2014-10-20 19:07:48

+0

作業需要在一個函數中,查詢會更容易我同意,因爲這只是拉起多少物品出租,但如果沒有customer_id返回0。 @MikeBrant – user2318083 2014-10-20 19:19:56

回答

1

裏面的功能,你需要選擇你的價值到您的變量,然後返回你的變量:

DECLARE num INT(10); 
SELECT COUNT(field) INTO num 
FROM table 
WHERE condition; 
RETURN num; 

你的情況:

DELIMITER $$ 
CREATE FUNCTION Num_Of_Rented(IN custId INT(10)) 
RETURNS INT(10) 
BEGIN 
    DECLARE num INT(10); 
    SELECT COUNT(*) INTO num 
    FROM Customer C 
    WHERE C.customer_id = custId ; 
    RETURN num; 
END $$ 
DELIMITER; 
+0

'field'是customer_id嗎?這似乎是唯一跟蹤任何租賃歷史的東西。所以如果customer_id在查詢中出現2次,它會計數2? – user2318083 2014-10-20 19:16:28

+1

我剛纔在我的查詢中使用了通用名稱,您需要根據您的表格結構和計算條件來確定您需要在每個地方使用的通用名稱。在我上面的例子中,「field」可以是任何字段或只是*或'x'或其他,我們只是對記錄進行計數,「table」是你的表名,而「condition」是任何where子句,它將縮小你的記錄選擇到期望的子集。例如:WHERE customer_id = 2 – gmiley 2014-10-20 19:19:31

+0

謝謝,這有助於。當你編輯你的時候,我剛剛改變了它。似乎它接受它,因爲它給我0錯誤。我如何調用函數來查看它是否正常工作? – user2318083 2014-10-20 19:33:17