MySql に 2 つのテーブルがあるとします。
value (住所フィールドの値)
フィールド (住所フィールド)
一部の人 (値テーブルの user_id) がすべての addressFields に入力していない可能性があります。つまり、一部のフィールドの値しかありません。
まだ使用していない他のすべてのフィールドですべての値を取得するために、左結合と右結合のユニオンを実行しています (MYSQL には FULL OUTER JOIN がないため、ユニオンが使用されます)。
SELECT field.*, value.*
FROM field
LEFT JOIN value ON field.id = value.field_id
WHERE
value.user_id='4'
union
SELECT field.*, value.*
FROM field
RIGHT OUTER JOIN value ON field.id = value.field_id
WHERE
value.user_id='4'
上記の組合は、私が達成したいことをしていません。User=4 には、50 個のフィールドのうち 4 個しか入力されていません。クエリの結果は 4 のみを返します。2 番目のフィールドを置き換えると、
value.user_id='4'
とともに
GROUP BY field.id
次に、54行を返します(4行に加えて、他のユーザーからの値を持つ50の可能なフィールドすべて)。また、value.* にダミー値を使用しようとしましたが、ユニオンがレコードを正しくマージしていないため、再び 54 行が返されます。
私が必要とするものを達成する方法はありますか?アイデアをありがとう…。