以下は私の表です。ユーザーは特定の言語で複数のプロファイルを持つことができ、英語以外のプロファイルは優先度が高くなります。
+------------+--------+----------------+------------ --+ |ProfileID |UserID |ProfileLanguage |ProfilePriority | +------------+--------+----------------+------------ --+ |1 |1 |en-US |2 | +------------+--------+----------------+------------ --+ |2 |1 |es-MX |1 | +------------+--------+----------------+------------ --+ |3 |1 |ja-JP |1 | +------------+--------+----------------+------------ --+ |4 |2 |es-MX |1 | +------------+--------+----------------+------------ --+ |5 |2 |ja-JP |2 | +------------+--------+----------------+------------ --+ |6 |2 |de-DE |1 | +------------+--------+----------------+------------ --+ |7 |3 |en-US |2 | +------------+--------+----------------+------------ --+
例: スペイン語を話す訪問者が私のサイト (ProfileLanguage = 'es-MX' または ProfilePriority = 2) をリクエストした場合、次のようなレコードが必要です。
+------------+--------+----------------+------------ --+ |ProfileID |UserID |ProfileLanguage |ProfilePriority | +------------+--------+----------------+------------ --+ |2 |1 |es-MX |1 | +------------+--------+----------------+------------ --+ |5 |2 |ja-JP |2 | +------------+--------+----------------+------------ --+ |7 |3 |en-US |2 | +------------+--------+----------------+------------ --+
以下は、ユーザーを取得するための基本的な SQL です。
SELECT UserID, MIN(ProfilePriority) AS ProfilePriority
FROM Profile
WHERE ProfileLanguage = 'es-MX' OR ProfilePriority = 2
GROUP BY UserID
しかし、ご存知のように、私は UserID しか取得できませんが、ProfileID などの他の列情報も必要です。したがって、ここの専門家が適切なレコードを取得するための正しい SQL 式を教えてくれることを願っています。