PDA

View Full Version : سوال: ترکیب دو جدول sql



lovee20002002
سه شنبه 14 خرداد 1392, 14:23 عصر
سلام دوستان شاید اینجا جاش نباشه ولی چون با اکسپرس کار میکنم اینجا میپرسم
من دو تا جدول دارم
یکی
code , name ,price
دومی هم به همین صورت هست
حالا تو اولی قیمت های جدید هست
تو دومی قیمت های قدیمی
کالا های دومی خیلی بیشتر از اولی هست یعنی اولی حدود 1000 تا دومی 7000 تا هست کالا ها با هم کد و نام برابر دارن حالا میخوام قیمت های جدید رو تو یک ستون جدید تو تیبل دومی وارد کنم که هم قدیمو نشون بدم هم جدیدو
از UNION نتونستم استفاده کنم کسی راهی داره برام ممنون میشم

ordebehesht
سه شنبه 14 خرداد 1392, 15:00 عصر
join کن جداولت رو

Mahmoud.Afrad
سه شنبه 14 خرداد 1392, 15:02 عصر
میخوای یکی از دو جدولو حذف کنی؟ یا فقط میخوای در کوئری خروجی به اینصورت باشه؟
اگر میخوای خروجی به اینصورت باشه باید join کنی:

select Table_1.code,
Table_1.name,
Table_1.price as newPrice
Table_2.price as oldPrice
from Table_1
full outer join Table_2
on Table_1.id = Table_2.id

mousa1992
سه شنبه 14 خرداد 1392, 15:11 عصر
سلام
چرا دوتا جدول برا قیمت ها ؟! شما ی جدول برا ثبت فروش ها دارید که اینجا نامی ازش برده نشده و توی این جدول شماره مشتری رو ثبت میکنید تاریخ خرید رو و شماره کالای خریداری شده و میزان خرید انجام شده و لازمه که یک فیلد دیگه اضافه کنید به این جدول برا ثبت قیمت محصول - چرا ؟ چون قیمت ها تغییر میکنه مدام و بالا پایین داره و شما نیاز داری که قیمت به فروش رفته رو داشته باشید و این به نظرم بهترین راه میتونه باشه

موفق باشی

lovee20002002
سه شنبه 14 خرداد 1392, 15:11 عصر
میخوام اولی رو که رکورد کمتری داره حذف کنم

lovee20002002
سه شنبه 14 خرداد 1392, 15:13 عصر
درسته ولی این یک فانکشن جداست چون تغییر قیمت ها هنوز اعمال نشده به این صورت میخوام اختلاف رو جدا محاسبه کنم تا بتونم به فاکتور اضافه کنم و موقت هست این کار تا قیمت ها ثابت بشه

lovee20002002
سه شنبه 14 خرداد 1392, 15:47 عصر
جناب Mahmoud.Afrad ممنون جواب داد فقط یک مشکل هست که بعضی کالا ها با نام جدید ثبت شده که تو تیبل دوم نیست و اونا رو نال میده به همراه کد شون اینا رو چکار کنم ؟ یعنی نه کدشون نه نامشون تو جدول قبلی نیست و جدیدا وقتی جواین میکنم اونا رو نال میده و فقط قیمت جدید رو میده

Mahmoud.Afrad
سه شنبه 14 خرداد 1392, 16:13 عصر
inner join کن. بعد سطرهای باقی مونده که در جوین شرکت نکردند رو اضافه کن.

with t_cte
as
(
select Table_1.code,
Table_1.name,
Table_1.price as newPrice,
Table_2.price as oldPrice
from Table_1
inner join Table_2
on Table_1.id = Table_2.id
)
select *
from t_cte

union

select Table_1.code,
Table_1.name,
Table_1.price as newPrice,
null as oldPrice
from Table_1
where Table_1.code not in (select code from t_cte)

union

select Table_2.code,
Table_2.name,
null as newPrice,
Table_2.price as oldPrice
from Table_2
where Table_2.code not in (select code from t_cte)


ولی باید یک جدول داشته باشی. هر رکورد در جدول کالا با توجه به زمانی که کالا ثبت میشه قابل پیگیری هست. یعنی میتونی با توجه به کد کالا و زمان ثبت اختلاف قیمت رو هر جور میخوای بدست بیاری.