0

私は次のJoinステートメントを持っています:

SELECT DISTINCT dn.fname, dn.lname,w.websit,q.qual,q.year,q.postqual,p.pnumber,a.accred,n.nspecial
FROM cur_doctor_names dn
LEFT JOIN cur_website w ON dn.userid = w.userid
LEFT JOIN cur_qualification q ON dn.userid = q.userid
LEFT JOIN (Select * from cur_phone_numbers where type="primary") p On dn.userid = p.userid
Left JOIN cur_accreditation a On dn.userid = a.userid
Left JOIN cur_niche n On dn.userid = n.userid
WHERE dn.userid =69
GROUP BY p.pnumber

テーブルcur_phone_numbers(p)、cur_accreditation(a)、cur_niche(n)の場合、結果にはユーザーの0から3のレコードを含めることができます。現在取得している結果は、データのすべての可能な組み合わせを示しています。列で個別にgroupbyを使用してみましたが、他の列からの結果が削除されます。nullで結果を取得してもかまいません。これは私が現在得ている結果です:

fname         lname        website  qual  year  postqual    pnumber  accred    nspecial
===========================================================================================
First Doctor  Last Doctor  NULL     NULL  NULL  NULL        123      ISO 9001  one
First Doctor  Last Doctor  NULL     NULL  NULL  NULL        123      ISO 9001  two
First Doctor  Last Doctor  NULL     NULL  NULL  NULL        123      ISO       one
First Doctor  Last Doctor  NULL     NULL  NULL  NULL        123      ISO       two
First Doctor  Last Doctor  NULL     NULL  NULL  NULL        1234     ISO 9001  one
First Doctor  Last Doctor  NULL     NULL  NULL  NULL        1234     ISO 9001  two
First Doctor  Last Doctor  NULL     NULL  NULL  NULL        1234     ISO       one
First Doctor  Last Doctor  NULL     NULL  NULL  NULL        1234     ISO       two
4

1 に答える 1

1

を使用して値の 1 つを選択する必要があります。aggregate functionsたとえば、次のようになりますmax

SELECT dn.fname, dn.lname,w.websit,q.qual,q.year,q.postqual,max(p.pnumber),max(a.accred),max(n.nspecial)
FROM cur_doctor_names dn
LEFT JOIN cur_website w ON dn.userid = w.userid
LEFT JOIN cur_qualification q ON dn.userid = q.userid
LEFT JOIN (Select * from cur_phone_numbers where type="primary") p On dn.userid = p.userid
Left JOIN cur_accreditation a On dn.userid = a.userid
Left JOIN cur_niche n On dn.userid = n.userid
WHERE dn.userid =69
GROUP BY p.pnumber
于 2012-10-12T11:42:53.313 に答える