0

Microsoft Access の SQL 構文についてお尋ねします。

私が欲しいのは:

kdploting kdsubject nmsubject nmlecture
kp001 km001 xx a
kp001 km002 yy b
kp001 km003 zz c

mysql の構文は次のとおりです。

select distinct(d.kdploting), c.kdsubject, a.nmsubject, b.nmlecture 
from subject a, mstlecture b, 
transplotingdetail c, transplotingheader d 
where d.kdploting = 'kp001' 
and d.kdploting = c.kdploting 
and c.kdsubject = a.kdsubject 
and d.kdlecture = b.kdlecture;

結果 :

kdploting kdsubject nmsubject nmlecture
kp001 km001 xx a
kp001 km001 xx b
kp001 km001 xx c
kp001 km002 yy a
kp001 km002 yy b
kp001 km002 年 c
kp001 km002 zz a
kp001 km002 zz b
kp001 km002 zz c

私はこのような結果を望んでいないので、誰かがなぜそれが起こるのか説明できますか? そして、正しいSQLクエリは何ですか?

みんなありがとう!

注:vb.netプログラムにこのクエリが本当に必要です、ありがとう!

ここに私のテーブル:

主題
    kdsubject nmsubject
    km001xx
    km002 yy
    km003zz

構造
    kdlecture nmlecture
    kd001a
    kd002b
    kd003c

移植詳細
    kdploting kdmatakuliah
    kp001 km001
    kp001 km002
    kp001 km003
    kp002 km001
    kp002 km002
    kp002 km003
    ...

トランスプロッティング ヘッダー
    kdploting kdlecture
    kp001 kd001
    kp001 kd002
    kp001 kd003
    kp002 kd001
    kp002 kd002
    kp002 kd003    
    ...

私が欲しいのはこのようなものです

kdploting kdsubject nmsubject nmlecture
kp001      km001         xx a
kp001      km002         yy b
kp001 km003 zz c
4

1 に答える 1

1

便宜上、テーブル/サブジェクト名を短縮/変更しました。ただし、サンプルと同じデータを使用します。SQL Server 機能の最も優れた点は次のとおりですRow_Number():) クエリは SQL Server で実行されるため、私はそれを利用しました。SQL Server の構文は、MS ACCESS とより一致しています。subjectidしたがって、クエリの最も重要な部分は、個別のおよびに基づいて内部レコードにランキング/番号付けがあることを確認することlectureidです。をご覧ください。

* SQLFIDDLE デモ

クエリ:

select y.did, x.lid, x.lname,
y.sid, y.sname from
(select ROW_NUMBER() OVER (ORDER BY a.lid) AS Row,
 a.lid, a.lname, b.did
from mstl a
left join (select distinct lid, did from 
           th) as b
on b.lid = a.lid
where b.did = 'kp001') as x
join
(select ROW_NUMBER() OVER (ORDER BY c.sid) AS Row,
 c.sid, c.sname, d.did
from subject c
left join (select distinct sid, did from 
           td) as d
on d.sid = c.sid
where d.did = 'kp001') as y
on x.row = y.row
;

結果:

DID     LID     LNAME   SID     SNAME
kp001   kd001   a       km001   xx
kp001   kd002   b       km002   yy
kp001   kd003   c       km003   zz
于 2012-12-25T21:44:16.033 に答える