0

みなさん、お疲れ様でした。他の人の質問から学び、ここに潜んでいる最後の数週間を過ごしました。すべての答えをありがとう。今、私は1つを尋ねる必要があります。sqlite3やその他のツールを使用して、2つの非常に大きな.txtファイルを.csvに、次にデータベースにマッサージすることができました。それぞれ7000+/-行。そして、私はプロセスのスクリプト作成に成功しました。よく知っている「商品」を検索して比較することはできますが、基準を満たしていることを知らない商品を検索できる必要があります。以下の簡略化した例では、米国とEUの市場を比較する必要があります。まだ気にしない列がたくさんあります(例では2、4)。列の垂直方向の順序は、私の例のようにアルファベット順ではありません。大麦は、EUの場合のようにトウモロコシの後に来る可能性があります。とうもろこしを頼むと、米国の価格がEUの価格よりも低いことがわかります。しかし、今日はヘンプについて知らないかもしれません。私が欲しいのは、table1、col3とtable2、col3のすべての類似した名前を明らかにし、一般的でない名前を無視して次の出力を表示する検索です。

US  Barley  3.50
EU  Barley  3.51
US  Corn    6.51
EU  Corn    8.52
US  Hemp    8.23
EU  Hemp    4.15

US / EUの注文は、商品とその価格よりもはるかに重要ではありません。よろしくお願いします。アル

データベース:商品

Table1
US  Foo Barley  3.50    abc
US  Bar Corn    6.51    def
US  Rev Flax    2.75    ghi
US  Des Hemp    8.23    jkl
US  Pon L_Rice  11.14   mno

Table2
EU  Pon Acai    4.25    pqr
EU  Rev Corn    8.52    stu
EU  Foo Barley  3.51    vwx
EU  Des Hemp    4.15    zab
EU  Bar S_Rice  11.13   cde
4

2 に答える 2

0

大成功!ありがとうございました。以下に示すように、スクリプトは小さなデータベースでほぼ完全に機能しています。大きいものはまだ試していません。出力フォーマットに関するもう1つの質問。最終出力で重複する商品名を抑制できますか?繰り返しになりますが、助けてくれてありがとう-誰かがこれを読んで、また価値を得ることを願っています。Al(はい、読みやすくするために少しクリーンアップしました)

$ sqlite3 test.db
SQLite version 3.6.21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .databases
seq  name             file                                                      
---  ---------------  ----------------------------------------------------------
0    main             /test.db                    
sqlite> .tables
EUGoods  USGoods
sqlite> .headers on

sqlite> select * from USGoods;
Market|RegNo|Commodity|Price|Junk
"US"|234|"Barley"|3.5|"abc"
"US"|126|"Corn"|6.51|"def"
"US"|89|"Flax"|2.75|"ghi"
"US"|432|"Hemp"|8.23|"jkl"
"US"|813|"L_Rice"|11.14|"mno"

sqlite> select * from EUGoods;
Market|RegNo|Commodity|Price|Junk
"EU"|945|"Acai"|4.25|"pqr"
"EU"|111|"Corn"|8.52|"stu"
"EU"|44|"Barley"|3.51|"vwx"
"EU"|99|"Hemp"|4.15|"zab"
"EU"|339|"S_Rice"|11.13|"cde"

sqlite> SELECT USGoods.Commodity, 
EUGoods.Commodity, 
USGoods.Market, 
USGoods.Price, 
EUGoods.Market,
EUGoods.Price 
FROM USGoods , EUGoods 
WHERE USGoods.Commodity = EUGoods.Commodity;

Commodity|Commodity|Market|Price|Market|Price
"Barley"|"Barley"|"US"|3.5|"EU"|3.51
"Corn"|"Corn"|"US"|6.51|"EU"|8.52
"Hemp"|"Hemp"|"US"|8.23|"EU"|4.15

sqlite> SELECT USGoods.Commodity, 
EUGoods.Commodity, 
USGoods.Market, 
USGoods.Price, 
EUGoods.Market,
EUGoods.Price 
FROM USGoods , EUGoods 
WHERE USGoods.Commodity = EUGoods.Commodity 
AND abs(USGoods.Price - EUGoods.Price) > 0.5 
ORDER BY USGoods.market, USGoods.commodity;

Commodity|Commodity|Market|Price|Market|Price
"Corn"|"Corn"|"US"|6.51|"EU"|8.52
"Hemp"|"Hemp"|"US"|8.23|"EU"|4.15

sqlite> 
于 2012-10-20T23:38:23.920 に答える