このSQLクエリに少し問題があります。私はそれを回避することができません。モデレータのような役割を持つユーザーが、その下のユーザーのアカウントタイプを変更できるサイトがありますが、現在は変更履歴がありますが、正しい情報を表示するのに問題があります。複数のネストされたサブクエリから選択するSQLクエリ
役割::私はこれらの3つのテーブルを持っている ROLE_ID、Role_Type
ユーザー: USER_ID、ファーストネーム、姓、ROLE_ID
変更ログ: LOG_ID、Moderator_ID、USER_ID、Prev_Role_ID、New_Role_ID、 Logtime
説明すると、変更ログには一意のLog_IDがあり、次にModerator_IDは変更を行う人のUser_IDであり、User_IDはユーザーのaccのIDですそれが変わったのはおかしい。そしてRole_IDはちょうどそれが何に変わったのかと同じものです。
これで、ログID、司会者の名字と姓、ユーザーの名字と姓、および以前の役割と新しい役割を表示します。
私はネストされた選択を使用していますが、私は多くのレコードを持っていることを除いてすべてがうまく表示されているので、テーブルの結合に問題があると思うし、Log_IDでグループ化すると、私の記録は間違った役割の変更を伴います。すべての組み合わせが返されるので、いくつかのJOINSが必要だと思いますが、何をどこに置くべきかわかりません。
SELECT changelogs.log_id, a.lastname AS mlastname, a.firstname AS mfirstname,
b.lastname AS ulastname, b.firstname AS ufirstname, c.role_type AS
pre_role, d.role_type AS new_role, changelogs.logtime
FROM (SELECT log_id, lastname, firstname FROM users, changelogs
WHERE users.user_id = changelogs.mod_id) a,
(SELECT log_id, lastname, firstname FROM users, changelogs
WHERE users.user_id = changelogs.user_id) b,
(SELECT log_id, role_type FROM roles, changelogs
WHERE changelogs.prev_role_id = roles.role_id) c,
(SELECT log_id, role_type FROM roles, changelogs
WHERE roles.role_id = changelogs.role_id) d, changelogs;
私は基本的にはちょうどちょうどそのIDのの代わりに、名前とそのIDのの代わりに役割と、それは正確に私の変更ログテーブルを表示します。
結果: LOG_ID、mLastname、mFirstname、uLastname、uFirstname、Pre_Role、NEW_ROLE、時間
このばかげた質問して申し訳ありませんが、それはかなり長い間私を盗聴されています。
@Miggyは... * B倍倍のc倍D倍のchangelog *行 –
これはあなたの最初の質問であるとして検討する既存のクエリの大幅なデカルト積の問題があります*あなたの問題を解決したか、あなたの解決策を見つけるのに最も役立ったので、答えを受け入れるには、Tick ** "](https://ibb.co/ikqyO6)をクリックしてください(nb:元に戻すにはもう一度クリックしてください) 。答えを受け入れることで、問題が解決されたことが分かり、解答を探したり解決する質問を探すときに時間を節約できます。 ** btw:受諾ごとに2つの評判ポイントが得られます。** –