2016-08-13 12 views

答えて

0

それを達成するために、あなたが別のテーブルを使用する必要があります。クエリの戻り空の結果は、しかし、私はその空ではありませんが、私はこの結果を取得するときにnullまたは空の列のデータ

SELECT transactions.id, 
     userEwallets.ewalletNumber, 
     userEwallets.currencySymbol, 
     transactions.money, 
     transactions.transactionType, 
     b.username AS toUser, 
     a.username AS sender 
FROM transactions 
    JOIN userEwallets ON transactions.ewalletId = userEwallets.id 
    LEFT JOIN users AS b ON b.id = transactions.toUserId 
    LEFT JOIN users AS a ON a.id = transactions.fromUserId 
WHERE transactions.userId = 37 

を取得したいです最初のものになります。あなたがそれをやっている方法で、 transactionsテーブルにレコードがない場合は、参加することはありません。
したがって、常にレコードを持ち、 LEFT JOINのレコードを持つテーブルを使用します。
はこれを試してください:あなたがここに where条件を使用している

SELECT transactions.id, 
    userEwallets.ewalletNumber, 
    userEwallets.currencySymbol, 
    transactions.money, 
    transactions.transactionType, 
    b.username AS toUser, 
    a.username AS sender 
FROM users AS b 
LEFT JOIN transactions ON b.id = transactions.toUserId 
LEFT JOIN users AS a ON a.id = transactions.fromUserId 
JOIN userEwallets ON transactions.ewalletId = userEwallets.id 
WHERE transactions.userId = 37 
0

where transactions.userId = 37。取引テーブルにデータがない場合、そのwhere条件は失敗し、したがってデータは返されません。

+0

私のクエリに必要な条件は、データベースに1人のユーザーがいないため、削除できません。 –

+0

@ tux-worldテーブルにデータがない場合は、条件に一致するデータがないことを意味しますwhere節に記載されているので、データが取得されていません –

+0

はい、その正しいですが、空のデータで空のカラムを取得したい –

2

1行のダミーテーブルを使用できます。他のテーブルは、それに結合されたままにする必要があります。あなたはそれをalliasを与える場合

SELECT transactions.id, 
     userEwallets.ewalletNumber, 
     userEwallets.currencySymbol, 
     transactions.money, 
     transactions.transactionType, 
     b.username AS toUser, 
     a.username AS sender 
FROM (select 1) dummy 
    LEFT JOIN transactions ON transactions.userId = 37 
    LEFT JOIN userEwallets ON transactions.ewalletId = userEwallets.id 
    LEFT JOIN users AS b ON b.id = transactions.toUserId 
    LEFT JOIN users AS a ON a.id = transactions.fromUserId 

あなたはオールウェイズテーブル名の代わりにサブクエリを使用することができます。左側の結合されたテーブルのWHERE条件をON句に移動する必要があることに注意してください - それ以外の場合、MySQLはINNER JOINに変換します。

+0

ありがとうございます、問題解決済み、whats '(select 1)dummy'? –

+0

その行と列が1つのダミーの派生テーブルです。 'select * from(select 1)dummy'を試してみてください。 –

+0

大変ありがとうございます –

関連する問題