PDA

View Full Version : مبتدی: به ازای هر جدول تکرار نتیجه



calculus
پنج شنبه 07 مرداد 1389, 16:01 عصر
سلام
من تازه کار با SQL Server رو شروع کردم
من این کوئری رو می نویسم:

Use ProjectService
select Machine.*,Customer.LastName
from Machine ,Customer
where Machine.CustomerCode=2
تو جدولی که داده وارد کردم فقط یک CustomerCode با عدد 2 وجود داره!
ولی وقتی Execute می کنم اون یک رکورد رو دوبار نشون میده، حالا اگر تو قسمت from دوتا جدول دیگه وارد کنم 8 بار یک نتیجه ی تکراری رو چاپ می کنه...
حالا باید چی کار کنم؟

محمد سلیم آبادی
پنج شنبه 07 مرداد 1389, 16:30 عصر
شرط join را فراموش کردین. بایستی مقدار CustomerCode با کلید جدول Customer جفت و جور یا match بشه. یعنی:

Use ProjectService
select Machine.*,Customer.LastName
from Machine m,Customer c
where Machine.CustomerCode=2
and m.customerCode=c.id;

ویرایش:
این طریقه ی JOIN کردن خیلی قدیمی هست و یکی از ایراد هایش هم همین فراموش کردن شرط اتصال هست. اگر از syntax سال 92 یعنی ANSI-92 اتصال بدین این مشکل بوجود نمیاد.

calculus
جمعه 08 مرداد 1389, 22:56 عصر
ممنون
من چک کردم برای روش جدید ترش...البته نمی دونم چقدر جدید تره:D


Use
ProjectService
select
Machine.*,Customer.LastName
from
Machine
inner join
Customer
on
Machine.CustomerCode=Customer.CCode
where Machine.CustomerCode=2

محمد سلیم آبادی
جمعه 08 مرداد 1389, 23:27 عصر
البته نمی دونم چقدر جدید تره
syntax قدیمی مال سال 1989 هست.

calculus
شنبه 09 مرداد 1389, 22:43 عصر
syntax قدیمی مال سال 1989 هست.

آقا مال شما جدید تر بود!:لبخند::لبخند::لبخند: