محمد سلیم آبادی
شنبه 20 تیر 1388, 00:29 صبح
سلام دوستان.
یک کوئری می خواهم ایجاد کنم به این شکل:
نام تمام ملبانانی که با قایق های شماره 1 و 2 و 3 به مسافرت رفته اند را بدست آورید؟
دو راه به ذهنم رسید ولی باز هم روش های خوبی نیستند.
این دو روش را مطرح می کنم و از تمام دوستانی که با روش های بهتری آشنا هستند می خواهم که مرا راهنمایی کنند.
بانک اطلاعاتی ام به این شکل است:
http://www.barnamenevis.org/forum/attachment.php?attachmentid=32994&stc=1&d=1247514847
روش اول:
-- Method 1
SELECT sailorname
FROM sailors s
WHERE sailorID IN(
SELECT sailorid
FROM sp
WHERE sp.boatID='1'
INTERSECT
SELECT sailorid
FROM sp
WHERE sp.boatID='2'
INTERSECT
SELECT sailorid
FROM sp
WHERE sp.boatID='3')
ORDER BY sailorName
روش دوم:
-- Method 2
SELECT sailorname
FROM sailors ss
WHERE EXISTS (SELECT *
FROM sp
WHERE sp.boatID='1'
AND ss.sailorid=sp.sailorid)
AND EXISTS (SELECT *
FROM sp
WHERE sp.boatID='2'
AND ss.sailorid=sp.sailorid)
AND EXISTS (SELECT *
FROM sp
WHERE sp.boatID='3'
AND ss.sailorid=sp.sailorid)
ORDER BY ss.sailorName
یک کوئری می خواهم ایجاد کنم به این شکل:
نام تمام ملبانانی که با قایق های شماره 1 و 2 و 3 به مسافرت رفته اند را بدست آورید؟
دو راه به ذهنم رسید ولی باز هم روش های خوبی نیستند.
این دو روش را مطرح می کنم و از تمام دوستانی که با روش های بهتری آشنا هستند می خواهم که مرا راهنمایی کنند.
بانک اطلاعاتی ام به این شکل است:
http://www.barnamenevis.org/forum/attachment.php?attachmentid=32994&stc=1&d=1247514847
روش اول:
-- Method 1
SELECT sailorname
FROM sailors s
WHERE sailorID IN(
SELECT sailorid
FROM sp
WHERE sp.boatID='1'
INTERSECT
SELECT sailorid
FROM sp
WHERE sp.boatID='2'
INTERSECT
SELECT sailorid
FROM sp
WHERE sp.boatID='3')
ORDER BY sailorName
روش دوم:
-- Method 2
SELECT sailorname
FROM sailors ss
WHERE EXISTS (SELECT *
FROM sp
WHERE sp.boatID='1'
AND ss.sailorid=sp.sailorid)
AND EXISTS (SELECT *
FROM sp
WHERE sp.boatID='2'
AND ss.sailorid=sp.sailorid)
AND EXISTS (SELECT *
FROM sp
WHERE sp.boatID='3'
AND ss.sailorid=sp.sailorid)
ORDER BY ss.sailorName