iT邦幫忙

0

資料表關聯?

sky1225 6 年前4536 瀏覽

有A.B兩個資料表
我從A網頁 新增一筆ID和身高到A資料表
希望能從B資料表中找出相同ID的NAME 新增到A資料表中
A資料表欄位
ID NAME Height
B資料表欄位
ID NAME
1 JAMES
2 MARS
在A網頁 輸入 1 和180
在資料庫
可以呈現
ID NAME Height
1 James 180
以下是我的程式碼 只能用id抓到name接下來就不知道怎麼處理了

	<?php   
mysql_query ("INSERT INTO A ( ID,NAME) SELECT ID,NAME 
FROM B  
WHERE B.ID =  '$ID'");   
?> 

1 個回答

6
godstamp
iT邦新手 3 級 ‧ 6 年前
最佳解答

你的意思是先透過網頁送出後,已經先新增好A資料表的 id 和 height 的欄位資料,餘下 name 欄位未填,然後想從 B 資料表用 id 取得 name 來補到 A 資料表的 name 欄位嗎?
那麼可以用子句試試看...

UPDATE A SET name=(SELECT name FROM B WHERE id='你要的ID' WHERE id='你要的ID'

不過既然要做資料表關聯,其實 B 資料表已經有 name 了,就不需要在 A 資料表多個 name 欄位,讓 A 資料表只有 id 和 height 兩個欄位就好,A 資料表與 B 資料表間有個共同的 id 欄位做彼此的關聯,之後如果需要同時取出指定 id 的 name 和 height 的話,可以利用 MySQL 語法將他們合併一起取出...

SELECT * FROM A LEFT JOIN B USING(id) WHERE id='要查的ID'

如果覺得合併語法太麻煩,在資料表資料變動頻率不大的情況下也可以另外建個view 資料表做為查詢用,建立view語法大致如下:

CREATE VIEW view資料表名稱 AS (SELECT id,name,height FROM A資料表 LEFT JOIN B資料表 USING(id) WHERE 1)

將來要取資料的話只要直接從 view 資料表取得即可..

SELECT * FROM view資料表 WHERE id='要查的ID'

我要發表回答

立即登入回答