PDA

View Full Version : سوال: مشکل با select



MINA B
سه شنبه 14 مرداد 1393, 13:21 عصر
سلام دوستان . من یه ارتباط چند به چند بین ملک و مالک دارم یعنی یه ملک میتونه چند تا مالک داشته باشه و یه مالک هم می تونه چند تا ملک داشته باشه موقع ثبت قرارداد با درج ملک مشخصات مالک هم میاد می خواستم بدونم چطوری می تونم اگه یه ملک چند تا مالک داشت کد ملی تمام مالکین رو از جدول ارتباط چند به چند select کنم و بریزم تو چند تا textbox.خواهش می کنم راهنمایی بفرمایید . اگه ابهامی هست بگین که دوباره توضیح بدم یا عکس بذارم.ممنون.

محمد آشتیانی
سه شنبه 14 مرداد 1393, 13:29 عصر
سلام
چیزی که به ذهن من میرسه اینه که شما یه جدول سوم ایجاد کنی با حداقل 2 فیلد (یک فیلد شناسه ملک و یک فیلد شناسه مالک) - جدول اول فقط اطلاعات مالک و جدول دوم فقط اطلاعات ملک باشه
موقع ثبت ملک شما میتونی به تعداد مالک ها تو اون جدول رکورد ثبت کنی یعنی هر رکورد میشه شناسه مالک + شناسه ملک و این با شناسه های مختلف برای مالکین و یک شناسه ملک تکرار میشه
از این طریق به راحتی میشه کاری که شما میخوای رو انجام داد.

MINA B
سه شنبه 14 مرداد 1393, 13:51 عصر
سلام
چیزی که به ذهن من میرسه اینه که شما یه جدول سوم ایجاد کنی با حداقل 2 فیلد (یک فیلد شناسه ملک و یک فیلد شناسه مالک) - جدول اول فقط اطلاعات مالک و جدول دوم فقط اطلاعات ملک باشه
موقع ثبت ملک شما میتونی به تعداد مالک ها تو اون جدول رکورد ثبت کنی یعنی هر رکورد میشه شناسه مالک + شناسه ملک و این با شناسه های مختلف برای مالکین و یک شناسه ملک تکرار میشه
از این طریق به راحتی میشه کاری که شما میخوای رو انجام داد.
بله من این جدول سوم رو دارم میخوام وقتی ملکی برای درج در قرارداد انتخاب شد هر چند تا مالک داره کد ملی مالک ها داخل تکست باکس ها قرار بگبره اما نمی دونم چطوری این کد ملی ها رو از جدول سوم بگیرم
http://8pic.ir/images/6rwf3e2yh9b6dsw7ha5t.png
اگه عکس رو ببینین میخوام قسمت مشخصات مالک رو عوض کنم و به جاش کد ملی مالکین رو بگیرم اما یه مشکل دیگه هم هست اینکه موقع چاپ یا گزارش گیری چطوری به ازای هر مالک سیستم خودش یه متغیر دیگه اضافه کنه ؟ فک کنم باید اینکه یه ملک چند تا مالک داره رو تو قرارداد نادیده بگیرم چون خیلی دردسر داره!

محمد آشتیانی
سه شنبه 14 مرداد 1393, 13:59 عصر
این کوئری رو ببینید


SELECT * FROM maalekin WHERE maalek_id IN (SELECT maalek_id FROM tbl3 WHERE melk_id = @melk_id)

تمام مشخصات مالکین یک ملک رو از جدول maalekin میاره ، کد ملک هم به صورت پارامتر میفرستی به کوئری ، اسم اون جدول سوم رو هم گذاشتم tbl3

ضمنا برای نمایش مالک یا مالکین میتونی به جای textbox ها یه دیتاگرید بذاری تا مشکل نمایش بیشتر از یه مالک رو نداشته باشی

MINA B
سه شنبه 14 مرداد 1393, 14:24 عصر
این کوئری رو ببینید


SELECT * FROM maalekin WHERE maalek_id IN (SELECT maalek_id FROM tbl3 WHERE melk_id = @melk_id)

تمام مشخصات مالکین یک ملک رو از جدول maalekin میاره ، کد ملک هم به صورت پارامتر میفرستی به کوئری ، اسم اون جدول سوم رو هم گذاشتم tbl3

ضمنا برای نمایش مالک یا مالکین میتونی به جای textbox ها یه دیتاگرید بذاری تا مشکل نمایش بیشتر از یه مالک رو نداشته باشی
اون کدی که داخل پرانتز هست فقط یه کد مالک رو برمی گردونه ؟

محمد آشتیانی
سه شنبه 14 مرداد 1393, 14:30 عصر
خیر ، هرچنتا مالک که برای ملک با کد melk_id@ ثبت شده باشه رو برمیگردونه.

اجازه بدید واضح تر توضیح بدم


جدول مالک - تو کوئری قبل اسم این جدول maalekin هست


maalek_id

code_melli

name

family



2000

1234567890

تست

تست



2001

5588774555

...

...





جدول ملک


melk_id

karbari

metraj

...



1000

مسکونی

...

...











جدول سوم (ارتباط بین ملک و مالک (یا مالکین) - توی کوئری پست قبل اسم این جدول tbl3 هست


maalek_id

melk_id



2000

1000



2001

1000






البته طبیعتا تعداد فیلدهای شما تو جدول اول و دوم بیشتره ولی جدول سوم همین کفایت میکنه و اون کوئری بالا به خوبی تو همچین ساختاری جواب میده
(هم چند ملک برای یک مالک هم بالعکس)

MINA B
سه شنبه 14 مرداد 1393, 14:31 عصر
اون کدی که داخل پرانتز هست فقط یه کد مالک رو برمی گردونه ؟
همزمان چطوری چند تا کد مالک رو بگیرم از جدول سوم و با استفاده از این کد ها اطلاعات رو از جدول مالکین داخل دیتا گرید بریزم؟

MINA B
سه شنبه 14 مرداد 1393, 14:38 عصر
ممنونم.در مورد چاپ چی ؟ چطوری متغیر تعریف کنم؟

محمد آشتیانی
سه شنبه 14 مرداد 1393, 14:42 عصر
توضیحات کافی رو تو پست قبل دادم ، نتیجه این کوئری ، اطلاعات کامل همه مالکین یه ملک هست ، شما کافیه نتیجه رو تو یه دیتاست یا دیتاتیبل لود کنید و به datasource دیتاگرید نسبت بدید.

برای چاپ هم همین روش رو تو کوئری که به ریپورت میفرستین استفاده کنید.

MINA B
سه شنبه 14 مرداد 1393, 14:48 عصر
توضیحات کافی رو تو پست قبل دادم ، نتیجه این کوئری ، اطلاعات کامل همه مالکین یه ملک هست ، شما کافیه نتیجه رو تو یه دیتاست یا دیتاتیبل لود کنید و به datasource دیتاگرید نسبت بدید.

برای چاپ هم همین روش رو تو کوئری که به ریپورت میفرستین استفاده کنید.
ممنون از کمکتون .