草庐IT

mysql - 内部连接 ​​3 表

coder 2023-10-03 原文

我的数据库中有 6 个表 .现在我想加入 car_space、transaction 和 sport_facilities。但是,我遇到了问题。

当我分别使用这两个sql命令时,这两个命令也可以运行,并且可以得到我想要的结果。

-- car_space INNER JOIN transaction
SELECT * FROM car_space INNER JOIN transaction ON car_space.carSpaceId = transaction.carSpaceId ORDER BY transactionId;
-- sport_facilities INNER JOIN transaction
SELECT * FROM sport_facilities INNER JOIN transaction ON sport_facilities.sportFacilitiesId = transaction.sportFacilitiesId ORDER BY transactionId;

然后,我将它们组合成一个命令。

-- Combine But Not Work
SELECT * FROM transaction
INNER JOIN car_space ON transaction.carSpaceId = car_space.carSpaceId
INNER JOIN sport_facilities ON transaction.sportFacilitiesId = sport_facilities.sportFacilitiesId
ORDER BY transactionId;

虽然可以运行,但是没有结果或显示记录。

我想做的是当我键入一个transactionId时,数据库可以找到在哪个表(car_space/sport_facilities)中的记录。 例如: 我输入 WHERE transactionId = 1 可以搜索数据库,这是来自 sport_facilities 表而不是 car_space。

谢谢。这里有一些代码供引用。

    -- Create a database
CREATE DATABASE booking_system;

-- Use This database
USE booking_system;

-- Create smartcart table
CREATE TABLE card(
    cardId  CHAR(8)     NOT NULL,
    PRIMARY KEY (cardId)
);

-- Insert some recond to card table
INSERT INTO card VALUES
    ('4332A0D5'),
    ('637ED500'),
    ('B3895A02'),
    ('E32F3702')
;

-- Create user table
CREATE TABLE user(
    userId      INT(5)          NOT NULL    AUTO_INCREMENT,
    cardNo      CHAR(8)         NOT NULL,
    firstName   VARCHAR(255)    NOT NULL,
    lastName    VARCHAR(255)    NOT NULL,
    sex         CHAR(1)         NOT NULL,
    dob         DATE            NOT NULL,
    hkid        CHAR(8)         NOT NULL,
    email       VARCHAR(255)    NOT NULL,
    telNo       INT(8)          NOT NULL,
    PRIMARY KEY (userId),
    FOREIGN KEY (cardNo) REFERENCES card (cardId) ON DELETE CASCADE,
    UNIQUE (hkid)
);

-- Alter user table
ALTER TABLE user AUTO_INCREMENT = 16001;

-- Insert some recond to user table
INSERT INTO user VALUES
    ('','4332A0D5','Andy','Ding','M','1962-04-20','K5216117','mkding@yahoo.com','98626229'),
    ('','637ED500','Emma','Dai','F','1972-06-15','D5060339','emmadai@yahoo.com.hk','62937453'),
    ('','B3895A02','Brinsley','Au','F','1984-02-24','P8172327','da224@live.hk','91961624'),
    ('','E32F3702','Eric','Fong','M','1990-04-15','Y1129323','ericfong0415@gmail.com','98428731')
;

-- Create car space price table
CREATE TABLE car_space_price(
    spaceNo             INT(2)      NOT NULL    AUTO_INCREMENT,
    price               INT(2)      NOT NULL,
    carSpaceDescription VARCHAR(16),
    CHECK (carSpaceDescription IN ('motorcycles','small vehicles','medium vehicles','large vehicles')),
    PRIMARY KEY (spaceNo)
);

-- Insert some recond to car space price table
INSERT INTO car_space_price VALUES
    ('','10','motorcycles'),        -- 1
    ('','10','motorcycles'),        -- 2
    ('','10','motorcycles'),        -- 3
    ('','10','motorcycles'),        -- 4
    ('','10','motorcycles'),        -- 5
    ('','20','small vehicles'),     -- 6
    ('','20','small vehicles'),     -- 7
    ('','20','small vehicles'),     -- 8
    ('','20','small vehicles'),     -- 9
    ('','20','small vehicles'),     -- 10
    ('','40','medium vehicles'),    -- 11
    ('','40','medium vehicles'),    -- 12
    ('','40','medium vehicles'),    -- 13
    ('','80','large vehicles'),     -- 14
    ('','80','large vehicles')      -- 15
;

-- Create car space table
CREATE TABLE car_space(
    carSpaceId  INT(5)      NOT NULL    AUTO_INCREMENT,
    spaceNo     INT(2)      NOT NULL,
    cardNo      VARCHAR(8)  NOT NULL,
    inTime      DATETIME,
    outTime     DATETIME,
    PRIMARY KEY (carSpaceId),
    FOREIGN KEY (spaceNo) REFERENCES car_space_price (spaceNo) ON DELETE CASCADE,
    FOREIGN KEY (cardNo) REFERENCES card (cardId) ON DELETE CASCADE
);

-- Insert some recond to car space table
INSERT INTO car_space VALUES
    ('','2','E32F3702','2015-02-23 14:24:18','2015-02-23 17:01:43'),    -- 1    --16004
    ('','6','B3895A02','2016-02-24 11:56:43','2016-02-25 09:21:08'),    -- 2    --16003
    ('','2','E32F3702','2016-02-24 16:42:34','2016-02-24 21:02:45'),    -- 3    --16004
    ('','2','E32F3702','2016-02-25 14:25:32','2016-02-25 17:03:54'),    -- 4    --16004
    ('','6','B3895A02','2016-02-25 17:12:11','2016-02-25 20:58:18'),    -- 5    --16003
    ('','13','637ED500','2016-02-25 19:17:03','2016-02-27 18:05:28'),   -- 6    --16002
    ('','6','B3895A02','2016-02-25 21:14:03','2016-02-25 23:53:28'),    -- 7    --16003
    ('','6','B3895A02','2016-02-26 08:46:23','2016-02-26 17:21:08'),    -- 8    --16003
    ('','2','E32F3702','2016-02-26 14:15:45','2016-02-26 21:01:15'),    -- 9    --16004
    ('','6','B3895A02','2016-02-27 09:42:13','2016-02-27 15:48:45'),    -- 10   --16003
    ('','2','E32F3702','2016-02-27 13:25:45','2016-02-27 15:15:45'),    -- 11   --16004
    ('','6','B3895A02','2016-02-28 10:57:16','2016-02-28 14:41:25'),    -- 12   --16003
    ('','2','E32F3702','2016-02-28 11:47:32','2016-02-28 13:43:15'),    -- 13   --16004
    ('','13','637ED500','2016-02-28 13:04:43','2016-03-02 22:39:46'),   -- 14   --16002
    ('','2','E32F3702','2016-02-28 14:42:34','2016-02-28 21:47:45'),    -- 15   --16004
    ('','6','B3895A02','2016-02-29 08:50:42','2016-02-29 14:28:42'),    -- 16   --16003
    ('','2','E32F3702','2016-02-29 12:12:35','2016-02-29 16:45:28'),    -- 17   --16004
    ('','6','B3895A02','2016-03-01 11:26:43','2016-03-01 14:56:26'),    -- 18   --16003
    ('','6','B3895A02','2016-03-03 13:45:26','2016-03-03 17:54:18')     -- 19   --16003
;

-- Create sport facilities price table
CREATE TABLE sport_facilities_price(
    sportNo             INT(2)      NOT NULL    AUTO_INCREMENT,
    sportType           VARCHAR(10) NOT NULL,
    price               INT(2)      NOT NULL,
    sportDescription    VARCHAR(20),
    PRIMARY KEY (sportNo)
);

-- Insert some recond to sport facilities price table
INSERT INTO sport_facilities_price VALUES
    ('','snooker','15','Snooker Room 1'),           -- 1
    ('','snooker','15','Snooker Room 2'),           -- 2
    ('','snooker','15','Snooker Room 3'),           -- 3
    ('','snooker','15','Snooker Room 4'),           -- 4
    ('','table_tennis','15','Table Tennis Room 1'), -- 5
    ('','table_tennis','15','Table Tennis Room 2'), -- 6
    ('','table_tennis','15','Table Tennis Room 3'), -- 7
    ('','table_tennis','15','Table Tennis Room 4'), -- 8
    ('','tennis','30','Tennis Vanue 1'),            -- 9
    ('','tennis','30','Tennis Vanue 2'),            -- 10
    ('','badminton','30','Badminton Vanue 1'),      -- 11
    ('','badminton','30','Badminton Vanue 2'),      -- 12
    ('','basketball','60','Hall')                   -- 13
;

-- Create sport facilities table
CREATE TABLE sport_facilities(
    sportFacilitiesId   INT(5)      NOT NULL    AUTO_INCREMENT,
    sportNo             INT(2)      NOT NULL,
    cardNo              VARCHAR(8)  NOT NULL,
    bookDate            DATE        NOT NULL,
    startTime           TIME        NOT NULL,
    endTime             TIME        NOT NULL,
    PRIMARY KEY (sportFacilitiesId),
    FOREIGN KEY (sportNo) REFERENCES sport_facilities_price (sportNo) ON DELETE CASCADE,
    FOREIGN KEY (cardNo) REFERENCES card (cardId) ON DELETE CASCADE
);

-- Insert some recond to sport facilities table
INSERT INTO sport_facilities VALUES
    ('','1','E32F3702','2015-02-23','12:00:00','14:00:00'),     -- 1    --16004
    ('','5','B3895A02','2016-02-23','14:00:00','15:00:00'),     -- 2    --16003
    ('','8','637ED500','2016-02-23','17:00:00','21:00:00'),     -- 3    --16002
    ('','2','E32F3702','2016-02-24','09:00:00','11:00:00'),     -- 4    --16004
    ('','5','4332A0D5','2016-02-24','13:00:00','14:00:00'),     -- 5    --16001
    ('','7','637ED500','2016-02-24','15:00:00','17:00:00'),     -- 6    --16002
    ('','8','B3895A02','2016-02-24','16:00:00','18:00:00'),     -- 7    --16003
    ('','10','4332A0D5','2016-02-25','09:00:00','10:00:00'),    -- 8    --16001
    ('','12','B3895A02','2016-02-25','13:00:00','14:00:00'),    -- 9    --16003
    ('','6','637ED500','2016-02-25','21:00:00','22:00:00'),     -- 10   --16002
    ('','4','637ED500','2016-02-26','11:00:00','13:00:00'),     -- 11   --16002
    ('','8','4332A0D5','2016-02-26','22:00:00','23:00:00'),     -- 12   --16001
    ('','13','B3895A02','2016-02-27','09:00:00','14:00:00'),    -- 13   --16003
    ('','4','637ED500','2016-02-28','12:00:00','14:00:00'),     -- 14   --16002
    ('','3','B3895A02','2016-02-28','14:00:00','15:00:00'),     -- 15   --16003
    ('','4','E32F3702','2016-02-28','17:00:00','19:00:00'),     -- 16   --16004
    ('','5','B3895A02','2016-02-28','21:00:00','22:00:00'),     -- 17   --16003
    ('','2','4332A0D5','2016-02-28','21:00:00','23:00:00'),     -- 18   --16001
    ('','10','E32F3702','2016-02-28','19:00:00','20:00:00'),    -- 19   --16004
    ('','11','B3895A02','2016-02-29','11:00:00','13::00:00'),   -- 20   --16003
    ('','8','E32F3702','2016-02-29','12:00:00','14:00:00'),     -- 21   --16004
    ('','4','4332A0D5','2016-02-29','15:00:00','18:00:00'),     -- 22   --16001
    ('','6','E32F3702','2016-03-01','09:00:00','11:00:00'),     -- 23   --16004
    ('','5','637ED500','2016-03-01','12:00:00','15:00:00'),     -- 24   --16002
    ('','3','B3895A02','2016-03-02','09:00:00','11:00:00'),     -- 25   --16003
    ('','7','4332A0D5','2016-03-02','12:00:00','13:00:00'),     -- 26   --16001
    ('','4','637ED500','2016-03-02','15:00:00','17:00:00'),     -- 27   --16002
    ('','1','E32F3702','2016-03-02','19:00:00','22:00:00'),     -- 28   --16004
    ('','12','4332A0D5','2016-03-03','11:00:00','13:00:00'),    -- 29   --16001
    ('','9','E32F3702','2016-03-03','15:00:00','16:00:00'),     -- 30   --16004
    ('','10','B3895A02','2016-03-03','09:00:00','11:00:00'),    -- 31   --16003
    ('','4','637ED500','2016-03-04','11:00:00','12:00:00'),     -- 32   --16002
    ('','8','E32F3702','2016-03-04','14:00:00','16:00:00'),     -- 33   --16004
    ('','6','B3895A02','2016-03-05','19:00:00','21:00:00'),     -- 34   --16003
    ('','13','E32F3702','2016-03-05','11:00:00','12:00:00'),    -- 35   --16004
    ('','8','637ED500','2016-03-05','14:00:00','15:00:00'),     -- 36   --16002
    ('','4','4332A0D5','2016-03-05','16:00:00','18:00:00'),     -- 37   --16001
    ('','5','E32F3702','2016-03-06','13:00:00','15:00:00'),     -- 38   --16004
    ('','9','B3895A02','2016-03-06','17:00:00','18:00:00'),     -- 39   --16003
    ('','11','4332A0D5','2016-03-07','20:00:00','21::00:00'),   -- 40   --16001
    ('','5','B3895A02','2016-03-07','22:00:00','23:00:00')      -- 41   --16003
;

-- Create transaction table
CREATE TABLE transaction(
    transactionId       INT(5)  UNSIGNED ZEROFILL   NOT NULL    AUTO_INCREMENT,
    userId              INT(5)  NOT NULL,
    carSpaceId          INT(5),
    sportFacilitiesId   INT(5),
    transactionDate     DATE    NOT NULL,
    PRIMARY KEY (transactionId),
    FOREIGN KEY (userId) REFERENCES user (userId) ON DELETE CASCADE,
    FOREIGN KEy (carSpaceId) REFERENCES car_space (carSpaceId) ON DELETE CASCADE,
    FOREIGN KEY (sportFacilitiesId) REFERENCES sport_facilities (sportFacilitiesId) ON DELETE CASCADE
);

-- Insert some recond to transaction table
INSERT INTO transaction VALUES
    ('','16004',NULL,'1','2015-02-23'),     -- 1    -- Sport Facilities
    ('','16003',NULL,'5','2015-02-23'),     -- 2    -- Sport Facilities
    ('','16004','2',NULL,'2015-02-23'),     -- 3    -- Car Space
    ('','16002',NULL,'8','2015-02-23'),     -- 4    -- Sport Facilities
    ('','16004',NULL,'2','2016-02-24'),     -- 5    -- Sport Facilities
    ('','16003','6',NULL,'2016-02-24'),     -- 6    -- Car Space
    ('','16001',NULL,'5','2016-02-24'),     -- 7    -- Sport Facilities
    ('','16002',NULL,'7','2016-02-24'),     -- 8    -- Sport Facilities
    ('','16003',NULL,'8','2016-02-24'),     -- 9    -- Sport Facilities
    ('','16004','2',NULL,'2016-02-24'),     -- 10   -- Car Space
    ('','16001',NULL,'10','2016-02-25'),    -- 11   -- Sport Facilities
    ('','16003',NULL,'12','2016-02-25'),    -- 12   -- Sport Facilities
    ('','16004','2',NULL,'2016-02-25'),     -- 13   -- Car Space
    ('','16003','6',NULL,'2016-02-25'),     -- 14   -- Car Space
    ('','16002','13',NULL,'2016-02-25'),    -- 15   -- Car Space
    ('','16002',NULL,'6','2016-02-25'),     -- 16   -- Sport Facilities
    ('','16003','6',NULL,'2016-02-25'),     -- 17   -- Car Space
    ('','16003','6',NULL,'2016-02-26'),     -- 18   -- Car Space
    ('','16002',NULL,'4','2016-02-26'),     -- 19   -- Sport Facilities
    ('','16004','2',NULL,'2016-02-26'),     -- 20   -- Car Space
    ('','16001',NULL,'8','2016-02-26'),     -- 21   -- Sport Facilities
    ('','16003',NULL,'13','2016-02-27'),    -- 22   -- Sport Facilities
    ('','16003','6',NULL,'2016-02-27'),     -- 23   -- Car Space
    ('','16004','2',NULL,'2016-02-27'),     -- 24   -- Car Space
    ('','16003','6',NULL,'2016-02-28'),     -- 25   -- Car Space
    ('','16004','2',NULL,'2016-02-28'),     -- 26   -- Car Space
    ('','16002',NULL,'4','2016-02-28'),     -- 27   -- Sport Facilities
    ('','16002','13',NULL,'2016-02-28'),    -- 28   -- Car Space
    ('','16003',NULL,'3','2016-02-28'),     -- 29   -- Sport Facilities
    ('','16004','2',NULL,'2016-02-28'),     -- 30   -- Car Space
    ('','16004',NULL,'4','2016-02-28'),     -- 31   -- Sport Facilities
    ('','16003',NULL,'5','2016-02-28'),     -- 32   -- Sport Facilities
    ('','16001',NULL,'2','2016-02-28'),     -- 33   -- Sport Facilities
    ('','16004',NULL,'10','2016-02-28'),    -- 34   -- Sport Facilities
    ('','16003','6',NULL,'2016-02-29'),     -- 35   -- Car Space
    ('','16003',NULL,'11','2016-02-29'),    -- 36   -- Sport Facilities
    ('','16004',NULL,'8','2016-02-29'),     -- 37   -- Sport Facilities
    ('','16004','2',NULL,'2016-02-29'),     -- 38   -- Car Space
    ('','16001',NULL,'4','2016-02-29'),     -- 39   -- Sport Facilities
    ('','16004',NULL,'6','2016-03-01'),     -- 40   -- Sport Facilities
    ('','16003','6',NULL,'2016-03-01'),     -- 41   -- Car Space
    ('','16002',NULL,'5','2016-03-01'),     -- 42   -- Sport Facilities
    ('','16003',NULL,'3','2016-03-02'),     -- 43   -- Sport Facilities
    ('','16001',NULL,'7','2016-03-02'),     -- 44   -- Sport Facilities
    ('','16002',NULL,'4','2016-03-02'),     -- 45   -- Sport Facilities
    ('','16004',NULL,'1','2016-03-02'),     -- 46   -- Sport Facilities
    ('','16001',NULL,'12','2016-03-03'),    -- 47   -- Sport Facilities
    ('','16003','6',NULL,'2016-03-03'),     -- 48   -- Car Space
    ('','16004',NULL,'9','2016-03-03'),     -- 49   -- Sport Facilities
    ('','16003',NULL,'10','2016-03-03'),    -- 50   -- Sport Facilities
    ('','16002',NULL,'4','2016-03-04'),     -- 51   -- Sport Facilities
    ('','16004',NULL,'8','2016-03-04'),     -- 52   -- Sport Facilities
    ('','16003',NULL,'6','2016-03-05'),     -- 53   -- Sport Facilities
    ('','16004',NULL,'13','2016-03-05'),    -- 54   -- Sport Facilities
    ('','16002',NULL,'8','2016-03-05'),     -- 55   -- Sport Facilities
    ('','16001',NULL,'4','2016-03-05'),     -- 56   -- Sport Facilities
    ('','16004',NULL,'5','2016-03-06'),     -- 57   -- Sport Facilities
    ('','16003',NULL,'9','2016-03-06'),     -- 58   -- Sport Facilities
    ('','16001',NULL,'11','2016-03-07'),    -- 59   -- Sport Facilities
    ('','16003',NULL,'5','2016-03-07')      -- 60   -- Sport Facilities
;

最佳答案

您希望如何组合行?

看起来您所有引用车位的交易都有一个 NULL 体育设施引用,反之亦然。

查询是逐行完成的,当您仅对车位进行 INNER JOIN 事务时,您将获得所有带有车位引用和车位记录的交易记录。所有其他交易都被过滤掉。

由于这些过滤的事务 + 车位行都没有体育设施引用(全部为 NULL),当您随后将 INNER JOIN 添加到体育设施时,没有匹配的行,并且再次过滤掉不匹配的行。这会留下一个空的结果集。

要从双重 INNER JOIN 查询返回任何结果,事务行必须引用(或链接)一个车位和一个体育设施。

如果您想保留所有交易行及其车位或体育设施以及未引用的 NULLed 记录,您可以将 INNER JOIN 更改为 LEFT JOIN(只需将 INNER 替换为 LEFT最终查询)。

关于mysql - 内部连接 ​​3 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36239226/

有关mysql - 内部连接 ​​3 表的更多相关文章

  1. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  2. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

  3. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  4. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  5. ruby-on-rails - 连接字符串时如何在 <%=%> block 内输出 html_safe? - 2

    考虑一下:现在这些情况:#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2#output:http://domain.com/?foo=1&bar=2我需要用其他字符串输出URL。我如何保证&符号不会被转义?由于我无法控制的原因,我无法发送&。求助!把我的头发拉到这里:\编辑:为了澄清,我实际上有一个像这样的数组:@images=[{:id=>"fooid",:url=>"http://

  6. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  7. ruby - Faye WebSocket,关闭处理程序被触发后重新连接到套接字 - 2

    我有一个super简单的脚本,它几乎包含了FayeWebSocketGitHub页面上用于处理关闭连接的内容:ws=Faye::WebSocket::Client.new(url,nil,:headers=>headers)ws.on:opendo|event|p[:open]#sendpingcommand#sendtestcommand#ws.send({command:'test'}.to_json)endws.on:messagedo|event|#hereistheentrypointfordatacomingfromtheserver.pJSON.parse(event.d

  8. ruby - 是否可以从也在该模块中的类内部调用模块函数 - 2

    在这段Ruby代码中:ModuleMClassC当我尝试运行时出现“'M:Module'的未定义方法'helper'”错误c=M::C.new("world")c.work但直接从另一个类调用M::helper("world")工作正常。类不能调用在定义它们的同一模块中定义的模块函数吗?除了将类移出模块外,还有其他解决方法吗? 最佳答案 为了调用M::helper,你需要将它定义为defself.helper;结束为了进行比较,请查看以下修改后的代码段中的helper和helper2moduleMclassC

  9. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

  10. ruby - 无法安装 gem - make 未被识别为内部或外部命令可运行程序或批处理文件 - 2

    我想在Windows7上安装带有ruby​​1.9.3的rspec-railsgem。我收到一些错误消息,提示无法安装某些json库。所以,我使用下面的说明来解决它。来源=The'json'nativegemrequiresinstalledbuildtools从[rubyinstaller.org][3]下载[Ruby1.9.3][2]从[rubyinstaller.org][3]下载DevKit文件对于Ruby1.9.3,使用[DevKit-tdm-32-4.5.2-20110712-1620-sfx.exe][4]将DevKit解压到路径C:\Ruby193\DevKit运行cd

随机推荐