PDA

View Full Version : خواندن از دو جدول



pedram_ns
شنبه 11 مهر 1388, 09:49 صبح
سلام
در اکسس دو جدول شماره یک و دو دارم در جدول 1 Id , Name وجود داره و در جدول دو Name,age .حالا چطور می شه بوسیله مقدار Id که با کوری استرینگ ارسال می شه مقدار name رو از جدول یک و همزمان بوسیله مقدار name به دست اومده در جدول دو age رو بخونم.
این فقط یک مثاله و فقط می خوام روشش رو بدونم.
با تشکر

Asad.Safari
شنبه 11 مهر 1388, 10:23 صبح
احتمال نداره که دو نفر اسمشون یکی باشه ؟؟؟

از این گذشته شما می تونید با استفاده از Inner join می تونید انجامش بدین



Select table1.*,table2.* from (table1 inner join table2 on table1.name=table2.name)
where table1.name='sirasad'


موفق باشید

pedram_ns
شنبه 11 مهر 1388, 11:03 صبح
با سپاس از کمکتون
باید بگم که مقدار name در واقع نام کاربری افراده که در دو جدول برابره.
من از کد هاتون استفاده کردم ولی ارور می ده که عمل اتصال صورت نمی گیره.
برای استفاده از این کدها آیا باید بین جداول هم در دیتابیس ارتباط باشه یا نه؟
من از کد هاتون بصورت زیر استفاده کردم.

Select table1.*,table2.* from (table1 inner join table2 on table1.name=table2.name)
where table1.ID=?'

چون Id رو از کوری می گیرم البته وقتی از یک مقدار name هم استفاده کردم هم جواب نداد.

Asad.Safari
شنبه 11 مهر 1388, 11:28 صبح
شما لطف کن و جدول ها تو اینجا بزن تا بتونم دقیقا کمکت کنم

موفق باشید

Asad.Safari
شنبه 11 مهر 1388, 11:30 صبح
باید بگم که مقدار name در واقع نام کاربری افراده که در دو جدول برابره.


این کاملا اشتباهه ... بعدا ممکنه به مشکل برخورد کنید ...

برای ارتباط جداول از کلید ها استفاده کنید .

مثلا یکی کلید اصلی و یکی کلید خارجی

pedram_ns
یک شنبه 12 مهر 1388, 08:51 صبح
با سپاس از توجه تون
من از اکسس استفاده می کنم جدول شماره یک برای ذخیره اطلاعات فروش یک جنسه که افراد روی سایت می ذارن و به وسیله یوزرنیم افراد معلوم می شه هر جنس رو کی گذاشته.

ID(Primary key,autonumber) , username , kala , cust , ….

جدول شماره دو مربوط به اطلاعات شخصی افراد عضوه که اون هم بوسیله یوزرنیم مشخص می شه.

ID , Username(primary key) , name , tel ,……

در واقع می خوام افراد بتونن کالاها رو سرچ کنن بعد از یافتن در یک صفحه جدید بوسیله کوری استرینگ id رو می گیرم و اطلاعات اون جنس رو از جدول اول می خونم و نمایش میدم

Select * from [table1] where ([id]=?)

تا اینجا مشکلی نیست ولی می خوام همزمان بوسیله username یافت شده در جدول اول مقادیر جدول دوم هم نمایش داده بشه که مشخص بشه چه کسی کالا رو برای فروش گذاشته؟
من با کلید خارجی و ... آشنایی ندارم لطفا بصورت کامل و جامع برای یک تمام مبتدی توضیح بدین.
با سپاس فراوان

Asad.Safari
یک شنبه 12 مهر 1388, 10:17 صبح
از اول به آخر شروع کنیم :

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

فرض کنیم جداول شما با اطلاعات زیر پر شده است :
جدول کالا :


1 asad mouse 2000
2 hasan keyboard 3000
3 asad monitor 5000
4 asad modemDSL 2300
5 hasan case 1200


جدول کاربراتون :



1 asad name 55555
2 hasan name 565566


با کوئری زیر :


select * from tableUsers inner join tableStuffs on tableUsers.username=tableStuffs.username


میشه به خروجی زیر دست یافت :


1 asad mouse 2000 name 55555
2 hasan keyboard 3000 name 565566
3 asad monitor 5000 name 55555
4 asad modemDSL 2300 name 55555
5 hasan case 1200 name 565566


و مثلا بخواهیم فقط فروش ها کاربر asad رو نشون بدیم به شکل زیر عمل می کنیم :


select * from tableUsers inner join tableStuffs on tableUsers.username=tableStuffs.username where tableUsers.username='asad'


ولی بازم میگم این مورد بعدا باعث مشکل خواهد شد :

شما بهتر است جداولتون رو به جالت زیر تعریف کنید :



table users:
id (PK) , username , name,tel ,...

table kala:
id (PK), name, Userid (FK) , Cost,...


یعنی ID کاربرتون رو به جای نام کاربر در جدول کالا تون بذارید ... این حالت بهترین و درست ترین حالت می باشد .

در این حالت کوئری اولی که نوشتم باید بدین شکل تغییر پیدا کنه :



select * from tableUsers inner join tableStuffs on tableUsers.id=tableStuffs.Userid


موفق باشید

pedram_ns
یک شنبه 12 مهر 1388, 15:19 عصر
دوست عزیز ممنونم که وقت تون رو برای من می ذارین.
کد اولتون همون طور که گفتین تمامی اقلامی که افراد گذاشتن رو بر می گردونه.
کد دوم هم اقلام اسد رو بر می گردونه.
ولی من می خوام بوسیله id شماره یک ابتدا مقدار asad ,mouse , 2000 رو از جدول اول برگردونم و بطور همزمان بوسیله asad اطلاعات name, tel رو بخونم و نمایش بدم این کدش چی می شه؟
بازم ممنون

Asad.Safari
یک شنبه 12 مهر 1388, 19:57 عصر
دقیق متوجه نشدم ... لطفا خروجی مطلبتون رو قید کنید

موفق باشید

pedram_ns
دوشنبه 13 مهر 1388, 06:52 صبح
تصور کنید که در یک صفحه مقدار Id مثلا 1 بوسیله کوری استرینگ گرفته می شه.
من می خوام که بوسیله این مقدار ID اطلاعات جدول یک رو بخونم که asad , mouse , 2000 طبق جدولی که خودتون گذاشتین رو بر می گردونه ولی برای اینکه به کاربر بگم کی این اقلام رو گذاشته باید از جدول شماره دو مقادیر name , tel رو هم بخونم. برای این کار باید مقدار یوزرنیم بدست آمده در جدول اول رو با یوزرنیم جدول دوم مقایسه کنم تا نتایج بدست بیاد.
در این مثال از جدول اول asad بدست اومد که در فیلد یوزرنیم جدول دوم هم نام Asad موجوده پس اینطوری مقدار name و شماره تلفن اسد 55555 بر می گرده.
امیدوارم واضح گفته باشم

Asad.Safari
دوشنبه 13 مهر 1388, 10:22 صبح
select * from tableStuffs where id=1

Result:


1 asad mouse 2000


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


select tableUsers.name,tableUsers.tel from tableUsers inner join tableStuffs on tableUsers.username=tableStuffs.username where tableStuffs.id=1

Result:


name 55555

pedram_ns
سه شنبه 14 مهر 1388, 09:02 صبح
دوست گرامی با تشکر از کمک تون مشکل من حل شد.
بازم مزاحم می شم