2012-06-04 57 views
1

我在將數據庫中的表連接在一起時遇到了問題,我想按特定順序顯示它以查看示例。SQL非規範化,將表列與其他表格列組合

表:product

product_id product_price product_qty 
1   5.25   100 

表:product_detail

product_id product_name product_generic_name 
1   Alcohol  Isoprophyl Alcohol 

而且我想加盟的結果是

product_id product_name product_generic_name product_price product_qty 
1   Alcohol  Isoprophyl Alchohol 5.25   100 

我的失敗代碼爲:

SELECT `product_detail`.`product_name`,`product_detail`.`product_name`,`product_detail`.`product_generic_name` 
FROM `product_detail` 
UNION 
SELECT * FROM `product` 

但結果不是我所需要的,它不添加只有行的列。 請給我如何解決這個問題的建議,

回答

1
SELECT p.product_id, 
     product_name , 
     product_detail, 
     product_generic_name , 
     product_price, 
     product_qty 
FROM product as p 
     inner join product_detail as pd on p.id = pd.id 

您可能希望就如何連接的表幾MySQL的教程讀了,因爲這很可能是一樣簡單,因爲它得到MySQL Reference manual

基礎的您的意見在這裏是另一種選擇嘗試:

Select * from 
     (SELECT p.product_id, 
       product_name , 
       product_detail, 
       product_generic_name , 
       product_price, 
       product_qty 
     FROM product as p) as newTable 

或者你也可以嘗試臨時表,如果你想別的東西。

create temporary table new_table 
SELECT p.product_id, 
       product_name , 
       product_detail, 
       product_generic_name , 
       product_price, 
       product_qty 
     FROM product as p 

然後在同一個腳本或者您但是調用它,你可以嘗試:

SELECT * FROM NEW_TABLE

+0

謝謝先生dreza它真的幫了大忙! –

+0

儘管如此,快速的問題,什麼會是表的新名稱? 它是表'p'嗎? –

+0

@anoldgangstah結果將是結果集,而不是表格實體,因此它不會直接命名。你爲什麼需要一個表名? – dreza