SELECT
dealing_record.*
,shares.*
,transaction_type.*
FROM
shares
INNER JOIN shares ON shares.share_ID = dealing_record.share_id
INNER JOIN transaction_type ON transaction_type.transaction_type_id = dealing_record.transaction_type_id;
上記のSQLコードは望ましい出力を生成しますが、いくつかの重複した列があります。また、列ヘッダーの表示が不完全です。私が変えるとき
linesize 100
ヘッダーは表示されますが、表示されるデータは重複しています
同様の質問を確認しましたが、これを解決する方法がわかりません。
列が重複しているのは、同じデータを表示する列をSQLエンジンに要求しているためです(SELECT dealing_record.*
など)、その後複製します。
たとえば、transaction_type.transaction_type_id
列とdealing_record.transaction_type_id
列には一致する行が含まれます(そうしないと、INNER JOIN
)これらの重複が表示されます。
この問題を回避する場合、または少なくとも結果が重複するリスクを軽減する場合は、@ ConradFrixですでに述べたように、本当に必要な列のみを使用してクエリを改善します。例はこれです:
SELECT
dealing_record.Name
,shares.ID
,shares.Name
,transaction_type.Name
,transaction_type.ID
FROM
shares
INNER JOIN shares ON shares.share_ID = dealing_record.share_id
INNER JOIN transaction_type ON transaction_type.transaction_type_id = dealing_record.transaction_type_id;
共有ではなく、dealing_recordを使用して共有に参加してください。
select dealing_record.*,
shares.*,
transaction_type.*
FROM shares inner join dealing_record on shares.share_ID = dealing_record.share_id
inner join transaction_type on transaction_type.transaction_type_id=
dealing_record.transaction_type_id;