【问题标题】:how to stored procedure that uses 2 or more 3 tables? [closed]如何使用 2 个或更多 3 个表的存储过程? [关闭]
【发布时间】:2013-01-18 03:43:50
【问题描述】:

我这里有 3 张桌子:

Tapes                                 

TapesID   Title    Qty
T1      BatDog     3
T2      UnderCat   2
T3      IronMouse  1
T4      Boys Zone  1
T5      RoboCat    1

Borrow_Details

BTransID    TSpecID Qty
BT1111      TS1     1
BT1111      TS2     1
BT1111      TS3     1
BT1112      TS1     1
BT1113      TS4     1
BT1113      TS5     1
BT1114      TS1     1
BT1114      TS6     1
BT1115      TS7     1

Tape_Specific_ID

TapesID TSpecID
     T1 TS1
     T1 TS2
     T1 TS3
     T2 TS4
     T2 TS5
     T3 TS6
     T4 TS7
     T5 TS8
     T5 TS9
  1. 如何创建显示磁带标题和特定磁带被借用次数的存储过程。该过程的输入只是特定的ID。过程的名称应该是list_title_ntimes

我的代码,但没有。 1:

DELIMITER $$

CREATE PROCEDURE list_title_ntimes (IN my_id VARCHAR(5))
BEGIN

 SELECT Title FROM Tapes AND TSpecID from Tapes_SPecID WHERE ID = my_id;

END $$
DELIMITER ;

但这不起作用..

【问题讨论】:

  • 我想你忘了问问题
  • 我已经更新了我的问题并发布了我的代码...
  • 我不明白为什么在这种情况下您要使用存储过程 1. 您可以通过简单的联接查询来获取它。对于案例 2:你可以通过谷歌搜索得到答案
  • 编号。 1已经回答了..现在唯一的问题是没有。 2,我不知道怎么做,你有什么想法吗?

标签: mysql stored-procedures


【解决方案1】:

"...显示磁带的标题和播放次数 已借用特定磁带。程序的输入只是 具体的id。"

这是示例程序:

DELIMITER $$
CREATE PROCEDURE list_title_ntimes (IN my_id VARCHAR(5))
BEGIN
    SELECT  a.Title, COUNT(*) totalCountBorrowed
    FROM    Tapes a
            LEFT JOIN   Tape_Specific_ID b
                ON a.TapesID = b.TapesID 
    WHERE   a.TapesID = my_id;
END $$
DELIMITER ;

如果您想在不指定ID 的情况下获取所有信息,

DELIMITER $$
CREATE PROCEDURE list_title_ntimes ()
BEGIN
    SELECT  a.Title, COUNT(*) totalCountBorrowed
    FROM    Tapes a
            LEFT JOIN   Tape_Specific_ID b
                ON a.TapesID = b.TapesID 
    GROUP BY a.Title;
END $$
DELIMITER ;

【讨论】:

  • 第一个过程不起作用,我调用了函数“call list_title_ntimes('TS1');错误:它说字段列表中的未知列'TS1'...
  • 它不起作用...错误:“字段列表”中的未知列“TS1”
  • 我检查了所有表格和所有字段,没有遗漏...
  • 'TS1' 是一个文字字符串,所以它必须用单引号括起来——不移位的双引号。这与反引号不可互换,反引号通常位于键盘上 1 键左侧的按钮上。如果您使用反引号或根本不使用引号,您将收到您所看到的消息。
  • 调用 list_title_ntimes('TS1') 错误:where 子句中的“TapesID”列不明确。仍然是一个错误..我该怎么办?
猜你喜欢
  • 1970-01-01
  • 2012-03-23
  • 2012-01-06
  • 2015-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 1970-01-01
相关资源
最近更新 更多