2011-02-23 73 views
0

好的,我將首先解釋我有什麼,以及我需要的結果。mysql從一個表中獲取數據到另一個表,同時分組記錄和額外字段

基本上,我有一個電話簿,但是電話簿中是否有「公司」 重複的記錄,而重複記錄不完全複製...:\

我認爲一個例子清楚地解釋:

演示記錄:

1. Company A, Address A, Phone A 
2. Company A, Address A, Phone B 
3. Company A, Address A, Phone C 
4. Company A, Address B, Phone A 

我想要什麼,就是讓新表,這將是充滿了「A公司」,「地址A」的電話號碼到一個記錄,所以結果應該是這樣的: 公司A,地址A,電話A,電話B,電話c等。

的第二個問題是, 「公司A」 可以是也有點不同勢,例如:

1. Company XYZ, Address A, Phone A 

2. Company ABC, Address A, Phone A 

我不連知道如何從這開始。 我正在考慮通過編寫一些c#應用程序, 來做到這一點,但我認爲使用純粹的mysql可能會有一個更簡單的解決方案。

回答

0

你的方式不保持標準化,
然而0,下面可能是你正在尋找

創建新表:

create table new_table 
(
    company_a varchar(255), 
    address_a varchar(255), 
    phone_a varchar(255), 
    phone_b varchar(255), 
    phone_c varchar(255) 
); // define your index 

插入到新表:

假設手機不包含,

insert into new_table 
select 
    company, 
    address, 
    substring_index(group_concat(phone), ',', 1) 
    as phone_a, 

    substring_index(
    substring_index(group_concat(phone), ',', 2), ',', -1 
) as phone_b, 

    substring_index(group_concat(phone), ',', -1) 
from 
    old_table 
group by company, address; 
+0

對不起,我甚至不明白你的答案:),我試圖編譯它是,但第二個子字符串得到一個錯誤。可恥的是我:( – Dementic 2011-02-23 19:05:15

+0

'爲 – ajreal 2011-02-23 19:11:11

+0

MySQL工作臺是returing一個「失落的連接」,而excuting。這是一個1.5米的記錄表,我嘗試從現在從命令行運行它。 – Dementic 2011-02-23 19:56:18

0

不完全是一個答案,但不同的方法

爲什麼不

  • 一個表公司

company | company_id | ...

  • 表地址

address_id | company_id | ...

  • 和一張桌子電話

phone_id | address_id | ...

這種方式,您可以有每家公司爲多個地址,每個地址作爲許多電話號碼,而無需改變你的SQL架構中未來

+0

你編輯你的問題,因爲我是通過添加「第二個問題」部分。這增加了以前只有1對多關係的多對多關係。這將需要添加一張額外的表來映射地址往返公司 – Damp 2011-02-23 18:50:16

+0

好吧,我明白你的方向是什麼, 但結果將用於「傳單」營銷。 ECE公司,在一個不同的地址應該通過郵寄得到報價。 所以,我需要將它們分開記錄,但每個記錄應該包含「地址A」中關於「公司A」的儘可能多的字段。所有這些都集成到我爲客戶開發的新軟件中。 – Dementic 2011-02-23 18:55:29

相關問題