0

我有 2 张桌子

客户表和费用表

客户有 3 个字段

帐单编号、公司、帐户编号

收费有 2

公司 , 帐号 #

我需要将第三列添加到 ChargesTable 中,并使用正确的账单 # 形成客户表,与公司和帐户 # 匹配。

有谁知道在mysql中执行此操作的有效方法?

4

3 回答 3

0

这是一个伪创建语句,如果你执行它会显示一个基本的关系结构(我想你在追求什么)。

它展示了关系约束,但缺乏真正的设计或结构。

CREATE TABLE `Customers` (
  `BillingNumber` INT UNSIGNED NOT NULL,
  `AccountNumber` INT UNSIGNED NOT NULL,
  `Company` VARCHAR(64) NULL)
ENGINE = InnoDB;

CREATE TABLE `Charges` (
  `BillingNumber` INT UNSIGNED NOT NULL,
  `AccountNumber` INT UNSIGNED NOT NULL,
  `Company` VARCHAR(64) NULL,
  INDEX `fk_table1_Customers_idx` (`BillingNumber` ASC),
  INDEX `fk_table1_Customers1_idx` (`AccountNumber` ASC),
  CONSTRAINT `fk_table1_Customers`
    FOREIGN KEY (`BillingNumber`)
    REFERENCES `Customers` (`BillingNumber`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_table1_Customers1`
    FOREIGN KEY (`AccountNumber`)
    REFERENCES `Customers` (`AccountNumber`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;
于 2013-09-12T23:52:02.517 回答
0

在费用表中创建新字段后。您需要更新值:

update charges c
join customers cu on cu.Company=c.Company and
cu.Account=c.Account
set c.NewBilling=cu.Billing;

http://sqlfiddle.com/#!2/f2449/4

于 2013-09-13T00:00:34.720 回答
0

首先向第二个表添加一列(假设 INTEGER 列类型):

ALTER TABLE ChargesTable ADD COLUMN BillingNumber INTEGER NULL;

然后通过将所有 ChargesTable 记录与第一个表连接来更新它:

UPDATE ChargesTable CH
JOIN CustomersTable CU ON (
      CH.CompanyNumber = CU.CompanyNumber
  AND CH.AccountNumber = CU.AccountNumber)
SET CH.BillingNumber = CU.BillingNumber;
于 2013-09-13T00:05:16.010 回答