私の意見では、最も直感的な方法で設定されていないデータベースを使用しています。私は参加しようとしている2つのテーブルを持っています。ストアテーブルはストアに関する情報を持ち、varcharフォーマットの7桁の数字として格納されるstore_idフィールドを持っています。トランザクションテーブルには、hstoreとして設定され、 "package_id" => "10000417"として格納されるtransaction_idフィールドがあります。私はこれらのフィールドに2つのテーブルを結合しようとしています。データ型を変更し、LEFTでLIKEを使用するOUTER JOIN
transaction_idフィールドをvarcharとしてキャストしようとしましたが、同時にjoinステートメントでサブクエリを使用してstore_idフィールドに "package_id" => "部分を追加しようとしました。ワイルドカードを追加する、JOIN文でLIKEを使用してみましたまだ問題を抱えてここLIKE使用しているとき、私が試したコードです:。。。
SELECT t.amount
,t.quantity_sold
,t.unit
,cast(t.transaction_details as varchar) as join_field
,s.product_name
,s.product_category
,s.metrc_id
FROM transactions t
LEFT JOIN store_info s ON t.transaction_details = s.store_id
WHERE t.transaction_details LIKE '%store_id%'
を私は他のバリエーションの数を試してみましたが、私は誰かがヒントを提供することができます期待していますこの2つのテーブルをリンクしようとするより良い方向に私のために。
ありがとうございます。
EDIT
私は、PostgreSQLとは対照的にSQL Serverの使用に慣れています。私はその後、hstoreデータ型に関するより多くの研究を行い、それを少し良く理解しています。私はまだ2つのテーブルに参加することに問題があります。次のクエリを使用して、ID番号のみの新しい列を作成することができました。
SELECT *, transaction_details->'package_id' as ID
FROM transactions
私はその後、無駄にその列を呼び出すことにより、接続しようとしましたので、私は次のことを試してみました:
SELECT *
FROM transactions t
LEFT JOIN store_info s ON t.transaction_details->'package_id' = s.store_id
は、私はまた、次の整数またはvarchar使用にキャストしようとした
SELECT *
FROM transactions t
LEFT JOIN store_info s ON cast(t.transaction_details->'package_id'
as varchar) = s.store_id
このようなノブのために申し訳ありません。助けてくれてありがとう。