PDA

View Full Version : مشکل در یک کوری Delete به همراه چند JOIN



NasimBamdad
پنج شنبه 26 مرداد 1391, 10:24 صبح
سلام و خسته نباشید .



SELECT dbo.patients.surgery_type, dbo.lenz_usage.lenz_id
FROM dbo.patients INNER JOIN
dbo.lenz_usage ON dbo.patients.id = dbo.lenz_usage.patientid
WHERE (dbo.patients.surgery_type = N'24')


کوری بالا رو اگه دقت کنید ، حاصل 2 تا جدول هست .

یکی جدول patients که جدول بیماران هست و مشخصات از جمله نوع جراحی بیمار در اون درج شده ( فیلد surgery_type

dbo.patients.surgery_type

یک جدول دیگه هم داریم به اسم lenz_usage که بیمارانی که براشون لنز استفاده شده در این جدول ( lenz_usage ) لیست شده اند .

یک فیلد مشترک بین این 2 جدول هم موجود هست به اسم patientid ( شماره پرونده که بین جداول مشترک هست)

dbo.patients.id که در جدول patients موجود هست و

dbo.lenz_usage.patientid که در جدول lenz_usage می باشد .


حالا من چه طوری بگم که تمام بیمارانی که در جدول lenz_usage هستند و نوع جراحیشون ( dbo.patients.surgery_type ) برابر با 28 هست ،، رکورد هاشون در lenz_usage پاک بشه .

یه این طور چیزی


ِDelete From Lenz_usage where dbo.patients.surgery_type = '24'


مرسی

alimanam
پنج شنبه 26 مرداد 1391, 16:19 عصر
با سلام


حالا من چه طوری بگم که تمام بیمارانی که در جدول lenz_usage هستند و نوع جراحیشون ( dbo.patients.surgery_type ) برابر با 28 هست ،، رکورد هاشون در lenz_usage پاک بشه

برای این کار در ابتدا از Delete * From yourTableName mabagiye query استفاده کن یعنی یه همچین چیزی :


DELETE * FROM tblTranslation_Table INNER JOIN tblResult ON (tblTRANSLATION_TABLE.COMPANY_ID = tblResult.Shop ) AND (tblTRANSLATION_TABLE.EAN_INSTORE= tblResult.instore_code ) WHERE tblResult.Los = -1;

موفق باشید./

NasimBamdad
پنج شنبه 26 مرداد 1391, 16:45 عصر
به این صورت انجام دادم ، ولی اررور داده


Delete *
FROM dbo.lenz_usage INNER JOIN
dbo.patients ON dbo.patients.id = dbo.lenz_usage.patientid
WHERE (dbo.patients.surgery_type = N'28')




Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '*'.

tooraj_azizi_1035
پنج شنبه 26 مرداد 1391, 17:16 عصر
تست کردم جواب داد:
DELETE lenz_usage.*
FROM patients INNER JOIN lenz_usage ON patients.patid = lenz_usage.patid
WHERE (((patients.surgery_type)=24));

NasimBamdad
پنج شنبه 26 مرداد 1391, 17:23 عصر
DELETE lenz_usage.*
FROM patients INNER JOIN lenz_usage ON patients.id = lenz_usage.patientid
WHERE (((patients.surgery_type)=24));



Msg 102, Level 15, State 1, Line 1
Incorrect syntax near '*'.
Msg 102, Level 15, State 1, Line 3
Incorrect syntax near 'patients'.

NasimBamdad
پنج شنبه 26 مرداد 1391, 17:26 عصر
راستی اون دات و استار آخر اسم جدول چی هست ؟

NasimBamdad
پنج شنبه 26 مرداد 1391, 17:26 عصر
این جوریش کردم درست شد


DELETE LU FROM lenz_usage AS LU
INNER JOIN patients ON patients.id = lu.patientid
WHERE patients.surgery_type = 28



از CodeProject برداشتم

مرسیییییییییییییییییییییی یییییییی