SQLのクエリは以下のとおりです。すべてのテーブルにデータがあるときに結果が得られますが、このクエリではtransactions
テーブルに保存されたデータがなく、JOINのテーブルの1つがデータでない場合、MySqlは空の結果を返します
id ewalletNumber currencySymbol money transactionType toUser sender
95 SHIRR9373036569 IRR 20 1 1 amin
SQLのクエリは以下のとおりです。すべてのテーブルにデータがあるときに結果が得られますが、このクエリではtransactions
テーブルに保存されたデータがなく、JOINのテーブルの1つがデータでない場合、MySqlは空の結果を返します
id ewalletNumber currencySymbol money transactionType toUser sender
95 SHIRR9373036569 IRR 20 1 1 amin
それを達成するために、あなたが別のテーブルを使用する必要があります。クエリの戻り空の結果は、しかし、私はその空ではありませんが、私はこの結果を取得するときに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
。 where transactions.userId = 37
。取引テーブルにデータがない場合、そのwhere
条件は失敗し、したがってデータは返されません。
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に変換します。
ありがとうございます、問題解決済み、whats '(select 1)dummy'? –
その行と列が1つのダミーの派生テーブルです。 'select * from(select 1)dummy'を試してみてください。 –
大変ありがとうございます –
私のクエリに必要な条件は、データベースに1人のユーザーがいないため、削除できません。 –
@ tux-worldテーブルにデータがない場合は、条件に一致するデータがないことを意味しますwhere節に記載されているので、データが取得されていません –
はい、その正しいですが、空のデータで空のカラムを取得したい –