PDA

View Full Version : مشکل در یک کوئری



onlinedays
چهارشنبه 04 خرداد 1390, 14:45 عصر
سلام دوستان ، شدیدا فوری
من کوئری نوشتم که فیلدهایی از 3 تا جدول رو سلکت میکنه با یک کلید کد مشتری که در اونها مشترکه ولی مشکلم اینجاست که سلکت که انجام میشه فیلدهایی که در بعضی از رکوردها خالی هست و در نتیجه خروجی هم باید خالی باشد ولی با مقادیر تکراری دیگر فیلد ها پر میشه . با left , right join هم امتحان کردم نشد.

SELECT customer.customer_name,customer.customer_family,

factorbuy.factorbuy_date,factorbuy.factorbuy_id,fa ctorbuy.object_name,

title_s.id,title_s.type,title_s.date,title_s.id_cu stomer,

FROM customer inner join factorbuy on factorbuy.customer_id='" + comboBox1.Text + "' and customer.customer_id=factorbuy.customer_id

inner join title_s on title_s.id_customer=customer.customer_id

یوسف زالی
چهارشنبه 04 خرداد 1390, 15:20 عصر
سلام.
رابطه جداول چجوریه؟
همه یک به یک هستند؟
UI رو با چی کار می کنید؟ دلفی یا سی یا...(به نظر میاد سی شارپ باشه)
گاهی ممکنه خود select شما اشکالی نداشته باشه ولی با کد اشتباه و هندل نشده بیایم فیلد هارو پر کنیم.
در این صورت ممکنه فیلد های null با اولین یا آخرین ردیف داده پر بشن.
شما خود select رو تو دیتابیس امتحان کن ببین درست میده؟

onlinedays
چهارشنبه 04 خرداد 1390, 19:30 عصر
آره یک به یکه با سی شارپ کار میکنم. نتیجه هردو جا یکیه . حالا چه کنم ؟؟ حسابی گیرم

یوسف زالی
چهارشنبه 04 خرداد 1390, 22:15 عصر
لطفا یک عکس از خروجیت و اسکریپتت و داده هات بذار

onlinedays
یک شنبه 08 خرداد 1390, 15:06 عصر
این تصویر خروجی گزارش هست

<img alt="">http://up.vatandownload.com/images/65s82mrd371cbg6xv0yz.gif

ولی باید خروجی گزارش این باشد .

http://up.vatandownload.com/images/tkzu4i0wlxnud79bcblg.gif


این هم کدش:

http://up.vatandownload.com/images/m5xz3tu7v74exqe3ib2.gif

parisa1463
چهارشنبه 11 خرداد 1390, 09:51 صبح
سلام
این طور که من متوجه شدم شما یک کوئری می خواهید تولید کنید که بعضی از فیلد های آن باید خالی باشد پس بهتر است از Left Join استفاده کنید من یک مثال که قبلا استفاده شده است و جواب می دهد براتون کپی می کنم ببینید کارتون راه می افته


select c_draft.code,c_draft.date , c_draftperson.personcode, c_draft.IsRead , c_draft.subject ,
c_draft.prioritycode , c_draft.classificationcode,c_draft.lettertypecode, c_draft.keywords,c_draft.projectcode,
Case
WHEN C_priority.name IS NULL THEN '_'
ELSE C_priority.name
End AS PriorityName,
Case
WHEN C_Classification.name IS NULL THEN '_'
ELSE C_Classification.name
End AS ClassificationName,
Case
WHEN C_LetterType.name IS NULL THEN '_'
ELSE C_LetterType.name
End AS LetterTypeName,
Case
WHEN C_LetterUnit.name IS NULL THEN '_'
ELSE C_LetterUnit.name
End AS LetterUnitName,
Case
WHEN P_Project.name IS NULL THEN '_'
ELSE P_Project.name
End AS ProjectName

from c_draft
Inner join C_DraftPerson ON C_Draft.code = C_DraftPerson.draftcode
LEFT JOIN C_priority ON C_priority.Code=c_draft.prioritycode
LEFT JOIN C_Classification ON C_Classification.Code=c_draft.classificationCode
LEFT JOIN C_LetterType ON C_LetterType.Code=c_draft.LetterTypeCode
LEFT JOIN C_LetterUnit ON C_LetterUnit.Code=c_draft.UnitCode
LEFT JOIN P_Project ON P_Project.Code=c_draft.ProjectCode






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

WHEN C_Classification.name IS NULL THEN '_'



اگر کارتون نشد عکس ERD مربوط به سه جدول را می توانید بگذارید شاید من بتونم کوئری رو برتون تولید کنم.