2012-05-11 62 views
1

我在我的mysql數據庫中有一個名爲user的表。我有一個自動增量id字段和一個member_id字段。和另一個選擇包的單選按鈕。 S for standard and P for premium。我想根據選擇的包將第一個ID設置爲P000001S000001自定義類型自動遞增ID codeigniter

For example if the first member choose P his member_id will be P000001 
      if the second member choose S his member_id will be S000002 
      if the third member choose S his member_id will be S000003 
      ... 
      ... 

member_id的長度將是精確7與P或S.

+0

下面是一個簡單的答案 http://stackoverflow.com/questions/611340/how-can-i-set- autoincrement-format-to-0001-in-mysql –

回答

1

你可以簡單地使用此查詢

select lpad(member_id,8,'0') 
from table 
where id = 1 
0

爲什麼不能簡單地有兩個表?一個用於S成員,另一個用於P成員。您可以使用零填充的ID。如果數字必須是唯一的,即您不希望S000001和P000001都存在,請使用另一個表來存儲唯一的ID並將它們引用到S和P表中。

喜歡的東西:

-- Table `ids` 
CREATE TABLE IF NOT EXISTS `ids` (
    `master_id` INT ZEROFILL NOT NULL AUTO_INCREMENT , 
    `member_type` ENUM('S','P') NULL , 
    PRIMARY KEY (`master_id`)) 
ENGINE = InnoDB; 


-- Table `s_type` 
CREATE TABLE IF NOT EXISTS `s_type` (
    `s_type_id` INT NOT NULL , 
    `master_id` INT NULL , 
    PRIMARY KEY (`s_type_id`) , 
    INDEX `fk_s_type_1` (`s_type_id` ASC) , 
    CONSTRAINT `fk_s_type_1` 
    FOREIGN KEY (`s_type_id`) 
    REFERENCES `ids` (`master_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

-- Table `s_type_copy1` 
CREATE TABLE IF NOT EXISTS `s_type_copy1` (
    `p_type_id` INT NOT NULL , 
    `master_id` INT NULL , 
    PRIMARY KEY (`p_type_id`) , 
    INDEX `fk_s_type_copy1_1` (`p_type_id` ASC) , 
    CONSTRAINT `fk_s_type_copy1_1` 
    FOREIGN KEY (`p_type_id`) 
    REFERENCES `ids` (`master_id`) 
    ON DELETE NO ACTION 
    ON UPDATE NO ACTION) 
ENGINE = InnoDB; 

如果你想要去的真正簡單,只需使用一個自動遞增的ID並採用枚舉CHAR(1)「S」或「P」。當你需要顯示時,你只需要把它們放在一起。 CHAR(1)列可用於確定成員資格類型。

如果您不打算添加更多的成員類型,您甚至可以使用TINYINT作爲布爾值(0 ='S',1 ='P')。

-- Table `ids` 
CREATE TABLE IF NOT EXISTS `ids` (
    `member_id` INT ZEROFILL NOT NULL AUTO_INCREMENT , 
    `member_type` ENUM('S','P') NULL , 
    PRIMARY KEY (`member_id`)) 
ENGINE = InnoDB; 

......或者......

-- Table `ids` 
CREATE TABLE IF NOT EXISTS `ids` (
    `member_id` INT ZEROFILL NOT NULL AUTO_INCREMENT , 
    `member_type` TINYINT , 
    PRIMARY KEY (`member_id`)) 
ENGINE = InnoDB; 
+1

我認爲這會讓我的工作更加複雜,對於cmnt,BTW thanx。 –

+1

我的意圖是使用單個表來做到這一點。 –

0

這個怎麼樣。

假設你有10位高級人員和8位標準人員。

新人加入標準帳戶。

function add_user($account_type) 
{ 
    $count = query->result(SELECT COUNT(*) WHERE `member_id` LIKE '$account_type_%'); 

    $count = $count+1; 

    convert count into 7 characters; 
    $count = $account_type.$count; 
    insert into database; 
} 

LIKE是一個SQL查詢來匹配部分結果,而%作爲通配符。

源= http://www.techonthenet.com/sql/like.php