2017-12-21 14 views
0

I持って、次の表 -MySQLのクエリの別のインスタンスが参加

  1. 次のフィールドを持つトランザクションテーブル -

    transactionIduserIdmerchantId

  2. ユーザテーブルとuserIDおよびdetails

  3. merchantId

    商人のテーブルと

detailsはmerchantIdがNULLであるため、一部のトランザクションのエントリがあるかもしれません。

私はmerchantIdと商人の詳細との取引のレポートを取得したいと思います。レポートにはすべての取引が含まれている必要があります。マーチャントIDのない取引の場合、マーチャント項目はNULLにすることができます。

SELECT vt.*, 
     u.userDetails, 
     m.merchantId, 
     m.merchantDetails 
FROM TRANSACTION AS vt 
LEFT JOIN merchant AS m ON vt.merchantId = m.merchantId 
JOIN users AS u ON vt.userId = u.userID; 

これはで参加行うことができます。

照会する -

A LEFTはmerchantIdフィールドがトランザクションテーブルにnullであるため、merchantIdヌルのエントリを返していない。このように参加します単独で?

+0

が –

+0

はあなたにそれがあるため失敗していないよろしいですあなたの質問のサンプルデータ、テーブル定義と予想される出力を含めるようにしてください。

自分のために参照してください(私はmerchantIdフィールドにNULLと1を含む4つの取引を挿入しました)ユーザーは存在しませんか? –

答えて

0

あなたのクエリは、必要に応じて動作します。それは、 'transaction'テーブルからすべてのトランザクションを返します。merchantIdがNULLである場合、商人の詳細はnullですが、トランザクションはまだリストにあります。

SQLFiddle DEMO

関連する問題