i'm learning how write sql joing , wrote below query.
select patient.name, patient.address, patient.contactnumber, patient.disease, patient.joining patient inner join add_doctor on patient.docassign = 4534543 here result i'm getting
**name address contactnumber disease joining** sdfdvd sdfdfbdfgd 3243453 sdvdvbd 01-jul-15 sdfdvd sdfdfbdfgd 3243453 sdvdvbd 01-jul-15 i'm confused on why there 2 same rows returned query result. please let me know how can fix , plese me understand why printing same row twice
patient table
id name disease address contactnumber docassign roomassign joining discharge 5656 sdfdvd sdvdvbd sdfdfbdfgd 3243453 4534543 general 01-jul-15 15-jul-15 65654 rgdgdgvds sdfdfdgdfdb 1123fdffdbfd 4556767 4545 vip 08-jul-15 15-jul-15 doctor table
id name address email contact speciality salary password 4534543 fggfhdfs rgghfgjfdj gfhgfhjg 4365457567 dfsfhgjgkgfk 435435 safgdgd 4545 aaaaaaaaa dffgdsg fdfgds 43535 dffssgdhgd 324234 dfdhgggfdh
in tsql inner join evaluated in 2 logical phases
- cross join
- filter out rows not satisfy filter condition in
onclause.
to if table patient has row like:
name address contactnumber disease joining docassign dfdvd sdfdfbdfgd 3243453 sdvdvbd 01-jul-15 4534543 and table add_doctor has rows like:
docname test test2 so inner join first cross join done interim results as:
step1: patient cross join add_doctor this result in 1*2 = 2 rows as:
name address contactnumber disease joining docassign docname dfdvd sdfdfbdfgd 3243453 sdvdvbd 01-jul-15 4534543 test dfdvd sdfdfbdfgd 3243453 sdvdvbd 01-jul-15 4534543 test2 in second logical phase of filerting based on on clause both rows qualifies filter condition
step2: on patient.docassign = 4534543 the final result has 2 rows duplicate data:
name address contactnumber disease joining sdfdvd sdfdfbdfgd 3243453 sdvdvbd 01-jul-15 sdfdvd sdfdfbdfgd 3243453 sdvdvbd 01-jul-15 to remove duplicate data use distinct keyword , re-write query as:
select distinct p.name, p.address, p.contactnumber, p.disease, p.joining patient p inner join add_doctor on p.docassign = 4534543 you can refer different logical phases in query processed here...
Comments
Post a Comment