バックグラウンド:
最初に、データベースとして mysql を使用して Web サイトを作成するように依頼されました。それが完了して送信された後、クライアントから、それを mssql に変換するように依頼され、3 層になりました。
サーバー間でデータを転送するためのクラスと関数を作成したので、3 層ビットは半分ほど完了しています。私が今苦労しているのはMsSQLです。
質問:
質問の MySQL バージョンは次のようになります。
select a.id as a_id, a.first_name, a.last_name, a.agent_code,
b.id as b_id, b.user_id, b.status_admin
from tbl_user a
inner join tbl_testimonia b
on a.id = b.user_id
where b.status_admin=0
group by a.id
order by b.id desc
それは、まだ承認されていない証言を各ユーザーにグループ化して返すことです。
私が立ち往生している場所:
これをMSSQLに変換できません
私の最善の試み:
- ビューを作成します。
次のように:
create view test as
(
select a.id as a_id, a.first_name, a.last_name, a.agent_code,
b.id as b_id, b.user_id, b.status_admin
from tbl_user a inner join tbl_testimonia b on a.id = b.user_id
where b.status_admin=0 and a.id in
(
select a.id from tbl_user a
inner join tbl_testimonia b
on a.id = b.user_id
where b.status_admin=0
group by a.id
)
)
これは私が望むものを選択しますが、作成ビューのidフィールドはグループ化できません。つまり、id フィールドは一意ではなく、同じ値を持つことができます。
この時点までの私の質問は、ビューでidフィールドを一意に選択するにはどうすればよいですか? 確かにPHPでそれを行うことができますが、最初に問題に遭遇した1か月前にそれを行うことができたはずです.
私はしばらく答えを見つけようとしてきましたが、私の質問に固有の答えを見つけられないようです
- 編集:サブクエリが一意のIDを選択しているにもかかわらず、メインクエリのinステートメントがこれを無関係にするため、MSSQLは機能しません
編集: 出力例::~ (MySql では 3 番目のフィールドは省略されています)
| a_id | firstN | LastN | agent_code | b_id | user_id |status_admin| +--------------------------------------------------------------------------+ | 32 | fn1 | ln1 | AC123213 | 14 | 32 | 0 | | 41 | fn2 | ln2 | 12345678 | 15 | 41 | 0 | | 32 | fn1 | ln1 | AC123213 | 16 | 32 | 0 |
編集:簡単な答えのためにLievenに大きな問題を解決した質問