というテーブルとUSERS
というテーブル、およびテーブルADDRESSES
がありADDRESS_TYPE
ます。各ユーザーは複数のアドレスを持つことができます。
SELECT *
FROM USER
INNER JOIN address ON address.userId = user.userId
INNER JOIN address_type ON address_type.id = address.addressType
WHERE addressType = 4
OR primaryAddress = 1
addressType が 4 の場合、アドレス テーブルをユーザー テーブルに結合したいのですが、addressType が 4 でない場合は、プライマリとしてマークされているアドレスを取得する必要があります。基本的に問題は、各ユーザーが 1 行のみを取得するようにクエリをグループ化する必要があることですが、ロジック = "addressType = 4 の場合はこのアドレスに参加し、それ以外の場合は primaryAddress = 1 の場合はこの他のアドレスに参加します"。
これが理にかなっていることを願っています。
編集:これらは私が扱っているテーブルです:
ユーザーテーブル
+--------+-----------------+-----------------+
| ユーザー ID | ファーストネーム | 姓 |
+--------+-----------------+-----------------+
| 10001 | デビー | デビー | バッソン |
| | 10002 | バマワマ | くどん |
| | 10003 | ジェシカ・エム | スティービー |
| | 10004 | キノン | ホワイト |
+--------------------+-----------------+-----------------+
住所タイプ
+----+------+-------------+------------+-------- ----+
| ID | コード | 説明 | 変更可能 | データステータス |
+----+------+-------------+------------+---------- --+
| 1 | ホーム | ホーム | 1 | 1 |
| | 2 | ブス | ビジネス | ビジネス | 1 | 1 |
| | 3 | SCH | 学校 | 学校 | 1 | 1 |
| | 4 | ドン | 寄付者の住所 | 1 | 1 |
+----+------+-------------+------------+---------- --+
アドレス表
+----------------+--------------------+--------------------- --+-------------+-------------+
| プライマリ アドレス | ユーザー ID | 通り1 | 都市 | アドレスタイプ |
+----+--------------------+-------------------------------------- --+-------------+-------------+
| 0 | 10001 | 12660 ピカルテ PL。| | サンディエゴ | 1 |
| | 0 | 10001 | 446 W ウィルシャー アベニュー | フラートン | フラートン | 2 |
| | 0 | 10001 | 4224 E. 114th ウェイ | ソーントン | 3 |
| | 1 | 10001 | 828コロラドブルバード。| | ロサンゼルス | 4 |
| | 0 | 10002 | 40A リンデン アベニュー、#2 | サマービル | 1 |
| | 0 | 10002 | 446 37th ストリート、#2 | オークランド | オークランド null | null |
| | 1 | 10002 | 私書箱 06562 | シカゴ | シカゴ | null | null |
| | 0 | 10002 | 1281 W. セカンド ストリート | サンペドロ | サンペドロ null | null |
| | 1 | 10003 | 10557 S. オークリー アベニュー | シカゴ | シカゴ | null | null |
| | 0 | 10003 | 1425 ハリソン ストリート、#324 | オークランド | オークランド null | null |
+----+--------------------+-------------------------------------- --+-------------+-------------+