2016-07-29 26 views
0

私はtbl_POというテーブルと、tbl_PO_LineItemsというテーブルを持っています。 tbl_POでは、関連するフィールドは「PO#」と「ステータス」です。 'Status'フィールドにはいくつかのオプションがあります。興味のあるものは「Closed」です。各POには多くの明細があるため、tbl_POのPO#とtbl_PO_LineItemのPO#の関係は1対多です。 tbl_PO_LineItemsには、 'LineNum'と呼ばれるフィールドがあり、これはラインアイテム番号です。 PO#とLineNumの組み合わせである 'コード'という別のフィールドがあります。私はこれが結合されたフィールドであることは承知していますが、データベースの残りの部分ではデータの流れをはるかに簡単にします。別のテーブルで親テーブルの値に基づいて子テーブルから項目を選択する方法は?

、それをtbl_table3呼んで、私はこの線に沿ってSQLステートメントを使用することができるようにしたい:

SELECT Code FROM tbl_PO_LineItems WHERE tbl_PO.Status = 'Closed'

問題がために、コードからの直接のリンクが存在しないということですtbl_PO内の任意のフィールド。そのPO#のtbl_POからStatus値を取得するには、そのコードに関連付けられているPO#を調べる必要があります。これどうやってするの?私はJOINコマンドで少し読んだけど、あまりにも快適ではない。

何か助けていただければ幸いです。

答えて

2

使用INNER JOIN

SELECT t1.PO_num, t2.Code 
FROM tbl_PO t1 
INNER JOIN tbl_PO_LineItems t2 
    ON t1.PO_num = t2.PO_num 
WHERE t1.Status = 'Closed' 

は、私は組み合わせコラムCodeについてですが、より多くの情報がないと私は改善のための提案をすることはできませんか狂気かわかりません。

+0

に参加(私は私の頭の上にこれをオフに書きましたが、それは実行する必要があります)。これは、あなたが求めているものであれば、私に教えてください各明細のIDです。複数の他のテーブルでコードを選択する際の使いやすさを考慮し、PO#で構成されていることからわかりました。あなたのコードで何が起こっているのかを説明することもできますか? t1とt2が何であるかは不明です。 – Michael

+1

@Michael 't1'と' t2'はテーブル_aliases_です。テーブル全体の名前の代わりに使用することができ、クエリをより読みやすくすることができます。 –

+0

シンタックス:select aliasName.columnName FROM tableName aliasName; – akhilsk

0

ここでは、参加者と参加者がいない場合のオプションを示します。検討し、それがフィールドにユニークだ

SELECT * --you can choose your columns here 
FROM tbl_PO AS PO, tbl_PO_LineItems AS LineItems 
WHERE PO.ID = LineItems.PONumber 
AND LineItems.Status = 'Closed 

かとは

SELECT * 
FROM tbl_PO AS PO 
JOIN tbl_PO_LineItems AS LineItems 
ON LineItems.PONumber = PO.ID 
AND LineItems.Status = 'Closed 
関連する問題