PDA

View Full Version : دستور insert در اسكيو ال



s_mokhtari
جمعه 31 اردیبهشت 1389, 10:16 صبح
با سلام :متفکر:
دوستان من 10 تا ركورد دارم حالا از اين 10 ركورد ممكن 4 تاش توي جدول قبلان ثبت شده باشد پس با اين حساب 6 ركورد ديگه دارم تا توي جدولم درج كنم حالا فقط اين 6 ركورد را كه درج كردم ميخوام اگه تكراري بود درج نشه در ضمن پيغام فقط يك بار ظاهر بشه حالا فقط يك بار درج ميشه ولي سر پيغامش مشكل دارم چون اين استور پروسيجر را توي حلقه در سي‌شارپ به تعداد ركوردهاي موجود توي ديتاگريد صدا ميزنم مثلا اگه 6 تا ركورد توي ديتاگريد است يه حلقه 6 بار اين استورپروسيجر را صدا ميزنم راه بهتري براي اين كار وجود داره
@ci int,
@di int=null,
@sal nvarchar(9),
@si int
AS

if not exists (select * from tbl_pardakh where sal=@sal and customerid=@ci)
insert into tbl_pardakh(customerid,driverid,sal,scoolid) values(@ci,@di,@sal,@si)
ELSE
RAISERROR('ركورد جاري قبلا ثبت شده است',16,1);

خيلي عجله دارم
با تشكر
:گریه:

محمد سلیم آبادی
جمعه 31 اردیبهشت 1389, 11:07 صبح
سلام،
نمی تونید تمام سطرهای موجود در datagrid را به یکباره درج کنید؟ و قبل از درج سطرهای تکراری را فیلتر کنید؟

یعنی:

INSERT INTO table_name
SELECT * FROM source AS c
WHERE NOT EXISTS (
SELECT * FROM table_name
WHERE col1 = c.col1
AND col2 = c.col2)

IF @@rowcount < (SELECT COUNT(*) FROM source) RAISERROR...

s_mokhtari
جمعه 31 اردیبهشت 1389, 12:46 عصر
سلام،
نمی تونید تمام سطرهای موجود در datagrid را به یکباره درج کنید؟ و قبل از درج سطرهای تکراری را فیلتر کنید؟

یعنی:

INSERT INTO table_name
SELECT * FROM source AS c
WHERE NOT EXISTS (
SELECT * FROM table_name
WHERE col1 = c.col1
AND col2 = c.col2)

IF @@rowcount < (SELECT COUNT(*) FROM source) RAISERROR...
با سلام و تشكر
خوب من تو كدي كه خودم نوشتم در واقع فيلتر كردم كه ركورد تكراري درج نشه ميشه كد خودتون را با كد من مثال بزنيد و اين rowcount مقدارش رو از كجا ميگيره خودش اتوماتيك پر ميشه
با تشكر
خيلي عجله دارم

محمد سلیم آبادی
جمعه 31 اردیبهشت 1389, 12:57 عصر
شما نیاز دارین در صورت وجود سطر تکراری یکبار پیغام داده شود.
روش فیلتر کردن شما با حلقه قابل مقایسه با روشی که من استفاده کردم نیست. چون روش پیشنهادی من یکباره تمام سطرها را فیلتر می کنم و یکباره تمام سطرها را درج می کنم.

تابع rowcount تعداد سطرهایی که affected شده اند را بر میگرداند. در صورتی که هیچ سطر تکراری وجود نداشته باشد تمام داده ها درج می شوند در این حالت مقداری را که rowcount بر میگرداند برابر با تعداد کل سطرهای درج شده است. در صورتی که تعداد سطرهای درج شده از تعداد کل سطرها (که قرار بر درجشان هست) کوچکتر باشد معلوم می شود که تعدادی سطر فیلتر شده است در این حالت می توانید به کاربر اطلاع دهید که سطر تکراری در میان سطرها وجود داشته است.

اگر مطالبی که گفتم مشکلات را حل نکرد، نیاز هست بطور کاملتر و شفاف تر نیازتان را مطرح کنید تا کمکتان کنم.

s_mokhtari
جمعه 31 اردیبهشت 1389, 13:50 عصر
شما نیاز دارین در صورت وجود سطر تکراری یکبار پیغام داده شود.
روش فیلتر کردن شما با حلقه قابل مقایسه با روشی که من استفاده کردم نیست. چون روش پیشنهادی من یکباره تمام سطرها را فیلتر می کنم و یکباره تمام سطرها را درج می کنم.

تابع rowcount تعداد سطرهایی که affected شده اند را بر میگرداند. در صورتی که هیچ سطر تکراری وجود نداشته باشد تمام داده ها درج می شوند در این حالت مقداری را که rowcount بر میگرداند برابر با تعداد کل سطرهای درج شده است. در صورتی که تعداد سطرهای درج شده از تعداد کل سطرها (که قرار بر درجشان هست) کوچکتر باشد معلوم می شود که تعدادی سطر فیلتر شده است در این حالت می توانید به کاربر اطلاع دهید که سطر تکراری در میان سطرها وجود داشته است.

اگر مطالبی که گفتم مشکلات را حل نکرد، نیاز هست بطور کاملتر و شفاف تر نیازتان را مطرح کنید تا کمکتان کنم.
با سلام
من آخه يه جدول به نام pardakt دارم ميخوام داخل اين جدول مقدارم را درج كنم حالا از ديتا گريد چطوري تمام مقدارها رو ارسال كنم ولي شما تو مثال ظاهران دو جدول داريد اگه ميشه اين حلقه را روي كد من كه نوشتم بذاريد اين كل استورپروسيجر من كه تو تاپيك گذاشتم
با تشكر
خيلي عجله دارم
:گریه:

s_mokhtari
جمعه 31 اردیبهشت 1389, 15:58 عصر
با سلام
من آخه يه جدول به نام pardakt دارم ميخوام داخل اين جدول مقدارم را درج كنم حالا از ديتا گريد چطوري تمام مقدارها رو ارسال كنم ولي شما تو مثال ظاهران دو جدول داريد اگه ميشه اين حلقه را روي كد من كه نوشتم بذاريد اين كل استورپروسيجر من كه تو تاپيك گذاشتم
با تشكر
خيلي عجله دارم
:گریه:
من دستور درج را كه نوشتم نميبتونم بعدش از دستور IF استفاده كنم خطا ميده
ALTER PROCEDURE [34]

@si int,
@name nvarchar(50)=null,
@school int=null,
@driver int=null

AS


INSERT INTO TBL_PARDAKH
if (@name is not null and @school is null and @driver is null)
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') order by فاميل


if (@name is not null and @school is not null and @driver is null)
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school order by فاميل

if (@name is not null and @school is not null and @driver is not null)
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school and tbl_customer.driverid=@driver order by فاميل

/*name is null*/
if (@name is null and @school is null and @driver is null)
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') order by فاميل


if (@name is null and @school is not null and @driver is null)
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school order by فاميل

if (@name is null and @school is not null and @driver is not null)
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school and tbl_customer.driverid=@driver order by فاميل

آخه من سه تا كمبوباكس دارم كه ممكن هر سه تاش پر باشه ممكن يكيش ممكن دوتاش براي همين شرط گذاشتم ممكن راننده را انتخاب كنه با مدرسه ممكن فقط نام مشتري را انتخاب كنه تازه تو جدول پرداختم فقط ميخوام از 8 تا ستونش فقط 4 تاشو پر كنم ولي با اينسرت نميشه
با تشكر

محمد سلیم آبادی
جمعه 31 اردیبهشت 1389, 23:55 عصر
من فقط کدتان را طوری اصلاح کردن که دیگر error نده


ALTER PROCEDURE [34]

@si int,
@name nvarchar(50)=null,
@school int=null,
@driver int=null

AS

if (@name is not null and @school is null and @driver is null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') order by فاميل


if (@name is not null and @school is not null and @driver is null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school order by فاميل

if (@name is not null and @school is not null and @driver is not null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school and tbl_customer.driverid=@driver order by فاميل

/*name is null*/
if (@name is null and @school is null and @driver is null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') order by فاميل


if (@name is null and @school is not null and @driver is null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school order by فاميل

if (@name is null and @school is not null and @driver is not null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school and tbl_customer.driverid=@driver order by فاميل

s_mokhtari
شنبه 01 خرداد 1389, 07:14 صبح
من فقط کدتان را طوری اصلاح کردن که دیگر error نده


ALTER PROCEDURE [34]

@si int,
@name nvarchar(50)=null,
@school int=null,
@driver int=null

AS

if (@name is not null and @school is null and @driver is null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') order by فاميل


if (@name is not null and @school is not null and @driver is null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school order by فاميل

if (@name is not null and @school is not null and @driver is not null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school and tbl_customer.driverid=@driver order by فاميل

/*name is null*/
if (@name is null and @school is null and @driver is null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') order by فاميل


if (@name is null and @school is not null and @driver is null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school order by فاميل

if (@name is null and @school is not null and @driver is not null)
INSERT INTO TBL_PARDAKH
SELECT TOP (100) PERCENT dbo.Tbl_Customer.CustomerID As كد, dbo.Tbl_Customer.LastName + ' ' + dbo.Tbl_Customer.FirstName AS فاميل,
dbo.Tbl_Customer.Namfader AS نام‌پدر, dbo.Tbl_Customer.Klas As كلاس, dbo.Tbl_Customer.Tel1 As تلفن, dbo.Tbl_Customer.Mobile1 AS همراه, dbo.Tbl_Customer.Mobile2 AS همراه2,
dbo.Tbl_Customer.Address As آدرس, dbo.Tbl_Customer.mrz AS شرح
FROM dbo.Tbl_Driver RIGHT OUTER JOIN
dbo.Tbl_Customer ON dbo.Tbl_Driver.DriverID = dbo.Tbl_Customer.DriverID LEFT OUTER JOIN
dbo.Tbl_ScoolM INNER JOIN
dbo.Tbl_Scool ON dbo.Tbl_ScoolM.ScoolNo = dbo.Tbl_Scool.ScoolNo ON dbo.Tbl_Customer.ScoolID = dbo.Tbl_Scool.ScoolID
WHERE (dbo.Tbl_Customer.LastName LIKE @name + '%') and tbl_customer.scoolid=@school and tbl_customer.driverid=@driver order by فاميل



سلام
با تشكر از راهنمايي شما ميخواستم ببينم راهي وجود نداره كه تيكه بالا تمام شرطها يكي فقط از شرط به بعدش فرق ميكنه براي جلوگيري از اين تكرار چيكار كنم