0

私はuserテーブルを持っており、payment多対多の関係テーブルです。

SELECT user.uID,
       user.uName,
       user.uLocation,
       user.uBlock,
       user.uRoom,
       user.uStatus,
       payment.pID,
       payment.pDate,
       payment.pType
FROM   user
       INNER JOIN payment
         ON user.uID = payment.pID
LIMIT  0,100  
  1. INNER JOIN結果は何もありません。
  2. LEFT JOIN ユーザーは正しい結果を表示しますがNULL支払いテーブルに戻ります
  3. RIGHT JOIN 支払いは正しい結果を表示しますがNULLユーザーテーブルに戻ります

両方を表示する正しい結果を得るにはどうすればよいですか? LEFT JOIN&RIGHT JOIN

4

2 に答える 2

2

欲しいFULL OUTER JOINですか?

SELECT user.uID,
       user.uName,
       user.uLocation,
       user.uBlock,
       user.uRoom,
       user.uStatus,
       payment.pID,
       payment.pDate,
       payment.pType
FROM   user
       FULL OUTER JOIN payment
         ON user.uID = payment.pID
LIMIT  0,100

完全外部結合

概念的には、完全外部結合は、左右の外部結合の両方を適用する効果を組み合わせたものです。FULL OUTER JOIN されたテーブルのレコードが一致しない場合、結果セットには、一致する行がないテーブルのすべての列に NULL 値が含まれます。一致するレコードについては、結果セットに 1 つの行が生成されます (両方のテーブルから入力されたフィールドを含みます)。

ウィキペディア


これMySQLを読むには、使用する必要がありますUNION

于 2012-04-29T19:11:53.287 に答える
1

ユーザーIDが支払いIDと等しいことを要求しています。それが空のセットを返す場合は幸運です。完全に間違ったデータを返す可能性もあります:)おそらく次のようになります。

user.uID = payment.uID

またはpayment.userId、または何か。支払い表の列を確認します。

于 2012-04-29T19:11:27.803 に答える