2015-11-10 23 views
1

我有一個名爲PRODOTTO MySQL表以這種方式合併MySQL表在一個表中使用PHP

+----+-----------+-------------+----------+--------+ 
| id | categoria | prodotto | quantita | prezzo | 
+----+-----------+-------------+----------+--------+ 
| 1 | bar  | Maxibon  |  887 | 2.00 | 
| 2 | bar  | Limonata |  21 | 1.50 | 
| 3 | bar  | Coca Cola |  70 | 1.50 | 
| 4 | bar  | chupa chups |  30 | 0.60 | 
| 5 | bar  | pirulo  |  79 | 1.00 | 
+----+-----------+-------------+----------+--------+ 

結構,另一種名爲CONSUMAZIONI

+----+----------+----------+--------+-----------------+--------+ 
| id | prodotto | quantita | prezzo | totale_parziale | status | 
+----+----------+----------+--------+-----------------+--------+ 
| 1 | Maxibon |  1 | 2.00 | 2.00   | open | 
| 2 | pirulo |  6 | 1.00 | 6.00   | open | 
+----+----------+----------+--------+-----------------+--------+ 

我想這個合併表並獲得這樣一個獨特的表

+----+----------+----------+----------------------+--------+----------------+--------+ 
| id | prodotto | quantita | quantita_disponibile | prezzo | totale_parziale | status | 
+----+----------+----------+----------------------+--------+-----------------+--------+ 
| 1 | Maxibon |  1 |     887 | 2.00 | 2.00   | open | 
| 2 | pirulo |  6 |     79 | 1.00 | 6.00   | open | 
+----+----------+----------+----------------------+--------+-----------------+--------+ 

所以新表是CONSUMAZIONI和c表的組合olod「quantita」的prodotto桌子。 在這個新表,我會做一個這樣的查詢

SELECT * FROM... 
+0

您可以查看... –

+0

此答案將幫助您... (http://stackoverflow.com/questions/18597952/mysql-merge-two-tables-into-one-with -聯盟) – anuraj

回答

1

試試這個:

CREATE TABLE Fusione AS 
(SELECT p.id,p.prodotto,c.quantita,p.quantita AS quantita_disponibile,p.prezzo,c.totale_parziale,c.status 
FROM Prodotto P, Consumazione c 
WHERE p.id=c.id 
) 

還要考慮到你的restucture模式,因爲你有兩個表中的冗餘。事實上,Consumazioni餐桌應該是Prodotto餐桌上的一種關係。所以Consumazioni應該是這樣的:

id_prodotto | quantità|狀態

其他信息可通過加入兩個表並對數據執行一些基本的數學運算(例如,totale_parziale是prezzo * quatita)來獲得。

0

你可以在PHP中做什麼,或者在MySQL中創建一個VIEW;所以你並不總是必須加入JOIN。

您可以創建這些表的視圖,如下所示:

CREATE VIEW prodConsumption AS 
    SELECT 
     p.prodotto, c.quantita, p.quantita AS quantita_disponibile, p.prezzo, c.totale_parziale, c.status 
    FROM 
     PRODOTTO p 
    INNER JOIN 
     CONSUMAZIONI c ON p.prodotto=c.prodotto 

Ofcourse,你應該看着你的表,按名稱加入是可怕的,和你的ID似乎並不匹配。

之後,你可以做你想要的東西:

SELECT * FROM prodConsumption 
0

您可以創建這樣一個VIEW

CREATE VIEW view_prodotto_consumazinoni AS 
    SELECT 
     c.id AS id, 
     c.prodotto AS prodotto, 
     c.quantita AS quantita, 
     p.quantita AS quantita_disponibile, 
     c.prezzo AS prezzo, 
     c.totale_parziale AS totale_parziale, 
     c.status AS `status` 
    FROM consumazinoni c INNER JOIN prodotto p ON c.prodotto=p.prodotto; 

這procudes正是你想要的輸出:

SELECT * FROM view_prodotto_consumazinoni; 
id prodotto quantita quantita_disponibile prezzo totale_parziale status 
1 Maxibon 1  887     2  2    open 
2 pirulo 6  79     1  6    open 

這種VIEW的優點是你可以定義一次然後使用它ju就像一張普通的桌子一樣,無需一直想着JOIN。它與兩個基表中的變化數據同步,因此始終保持最新狀態。

我設置SQL小提琴手你,這樣就可以了一下週圍玩:

http://sqlfiddle.com/#!9/76a43/1

玩得開心!