2011-07-25 16 views
0

私は価格比較プログラムに取り組んでいます。私には3つのウェブサイトがあります。私のデータベースには、Webショップ用の3つのテーブルがあります。各テーブルにはpriceとproduct_idの列があります。私はすべてのproduct_id-sをリストし、すべてのwebshopの価格を見たいと思います。すべてのwebshopが同じ製品を持っているわけではないので、製品IDはユニークですが、すべての表で同じではありません。私はmysqlを使って作業していますが、データベースはとても新しいです。どのようなクエリを試す必要がありますか?価格比較のためのMysqlクエリ

+0

は、他の何かであり唯一のユニークな行を生成しますテーブルはすべてのテーブルで同じです(比較のために)? – rabudde

答えて

2

すべてサイトで販売されているかどうかにかかわらず、すべての製品をリストする「マスター」製品表があることをお勧めします。それからそれをウェブサイトの価格表に組み込みます。製品名にマッチしてみてください。

select 
    p.*, 
    t1.price as site1_price, 
    t2.price as site2_price, 
    t3.price as site3_price 
from product p 
left join website1 t1 on t1.name = p.name 
left join website2 t2 on t2.name = p.name 
left join website2 t3 on t3.name = p.name; 

あなたは名前が一意でない場合は、ブランドとモデル、すなわちon t1.brand = p.brand and t1.model = p.model、またはいくつかの他の基準に参加しようとする必要がある場合があります。最も単純な形式では、クエリウォールドはのように見えます。

商品を販売していない場合、現地価格はnullになります。

はすぐに製品を投入するには、これを実行することができます:

insert into product (name, brand, model, ...) 
select name, brand, model, ... from website1 
union 
select name, brand, model, ... from website2 
union 
select name, brand, model, ... from website3; 

FYI、UNION(というよりもUNION ALL)の使用は、労働組合の出力が

+0

ありがとう、とても助かりました。私が必要としていたものです。 – czadam

関連する問題