PDA

View Full Version : مبتدی: راهنمايي در مورد ساخت يه كوئري



mori5858
چهارشنبه 20 شهریور 1392, 13:40 عصر
سلام ميخوام اطلاعات يه شخص رو از دوتا جدول بخونم و بريزم داخل ديتاست مثلا ميخوام ميخوام ببينم اين شخص توي جدول واريز چند بار واريز انجام داده و همچنين توي جدول برداشت چند بار برداشت انجام داده حالا هر چي برداشت يا واريز بود رو داخل ديتاگريد نشون بدم روش كارش چطوريه؟ بايد چيكار كنم؟ بايد Join كنم؟؟؟ ممنون ميشم اگه راهنمايي كنين

R_khaleghi
چهارشنبه 20 شهریور 1392, 14:16 عصر
سلام.


SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

amir200h
چهارشنبه 20 شهریور 1392, 14:32 عصر
بله باید join کنین و برای تعداد هم باید از تابع count استفاده کنین و در آخر یک شرط که کلید اصلی اون کاربررو باید بزارین و یک group by

mori5858
چهارشنبه 20 شهریور 1392, 14:35 عصر
ميشه يخورده مبتدي تر توضيح بدي :لبخند:
چطوري ميشه اطلاعاتش رو ريخت داخل گريدويو؟

sohil_ww
چهارشنبه 20 شهریور 1392, 15:05 عصر
ميشه يخورده مبتدي تر توضيح بدي :لبخند:
چطوري ميشه اطلاعاتش رو ريخت داخل گريدويو؟

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

mori5858
چهارشنبه 20 شهریور 1392, 15:24 عصر
دستورات كوئري رو درست نوشتم؟؟؟


SELECT tblHesab.ShomareHesab, tblBardasht.Tarikh, tblBardasht.Mablagh, tblVariz.Tarikh AS Expr1, tblVariz.Mablagh AS Expr2
FROM tblHesab INNER JOIN
tblBardasht ON tblHesab.ShomareHesab = tblBardasht.ShomareHesab INNER JOIN
tblVariz ON tblHesab.ShomareHesab = tblVariz.ShomareHesab
where tblHesab.ShomareHesab= @ShomareHesab

Mahmoud Zaad
چهارشنبه 20 شهریور 1392, 17:03 عصر
سلام
این کار از اساس غلطه. شما باید یه جدول برای برداشت و واریز داشته باشید، فقط با یه فیلد نوع عملیات یا تراکنش رو مشخص کنید.

roolinjax
چهارشنبه 20 شهریور 1392, 17:13 عصر
سلام عزیزم از پایه کار شما و طراحی شما ایراد داره
در همچین سیستم هایی شما باید کلا این دو تا جدول رو با هم ادغام کنی و یه جدول داشته باشه
و به جای اضافه کردن یه جدول یه فیلد به نام نوع تراکنش بذاری که توی اون مشخص کنی کاربر برداشت میکنه یا واریز
در این صورت دیگه از این مشکلات براتون پیش نمیاد
موفق باشید

بله من پست آقا محمود رو ندیدم ، من توضیح ایشون رو کاملتر گفتم

sohil_ww
چهارشنبه 20 شهریور 1392, 17:13 عصر
سلام
این کار از اساس غلطه. شما باید یه جدول برای برداشت و واریز داشته باشید، فقط با یه فیلد نوع عملیات یا تراکنش رو مشخص کنید.

میشه با دلیل توضیح بدید ؟

mori5858
چهارشنبه 20 شهریور 1392, 17:33 عصر
سلام
این کار از اساس غلطه. شما باید یه جدول برای برداشت و واریز داشته باشید، فقط با یه فیلد نوع عملیات یا تراکنش رو مشخص کنید.

حرف شما درسته. در اصل بايد يه جدول باشه اما من بايد دوتا جدول داشته باشم
اين مشكل رو با View حل كردم. اما به يه مشكل ديگه برخوردم كه اگه به قول شما يه جدول ميبود اين مشكل پيش نميومد
اطلاعات رو توي ديتاگريد تكرار ميكنه و در مقابل هم نشون ميده اما من ميخوام اطلاعات زير هم نشون داده بشن
الان اطلاعات داخل گريدويو اين شكليه

110472
اما من ميخوام اين شكلي باشه. ميشه همچين كاري كرد؟
110473

mori5858
چهارشنبه 20 شهریور 1392, 19:31 عصر
كسي نميتونه راهنمايي كنه؟

Mahmoud Zaad
چهارشنبه 20 شهریور 1392, 20:35 عصر
لطفاً کل فیلدهای دو تا جدول رو اینجا بنویسید.

Mahmoud Zaad
چهارشنبه 20 شهریور 1392, 20:43 عصر
میشه با دلیل توضیح بدید ؟
اول اینکه نیاز نیست برنامه نویس دو بار همه عملیات ثبت و ویرایش و حذف رو انجام بده.
بعد اینکه مهمترین کار یه برنامه گزارش هایی هست که میده. با این روش همینطور که برای این گزارش ساده این دوستمون گیر کرده اند برای گزارش های پیچیده تر بسیار به مشکل بر می خورن. شما فرض کنید مانده حساب ساده بخوایم بگیریم. باید یه بار از جدول برداشت کل مبالغی برداشتی رو حساب کنیم یه بار از جدول واریز کل واریزها رو بعد جمع و تفریق کنیم. یعنی دو بار برای یه کار باید به دیتابیس مراجعه کنیم. برای رکوردهای بالا حساب کنید چه اتفاقی می افته. در صورتیکه اگر یه جدول داشته باشیم با یه گروه بندی و یه select و یه بار مراجعه به بانک اطلاعاتی اینکار رو انجام میدیم.
در کل به فرض هم بتونیم این کار رو با دو جدول انجام بدیم، این کار مستلزم استفاده از کوئری های پیچیده است که احتمال اشتباه رو افزایش می ده، بهتره وقت و انرژی رو روی کارهای مهمتری قرار بدیم و راه کوتاه تر رو انتخاب کنیم.
بازم اگه چیزی یادم افتاد اشاره میکنم.

mori5858
پنج شنبه 21 شهریور 1392, 08:46 صبح
لطفاً کل فیلدهای دو تا جدول رو اینجا بنویسید.

اين جدول برداشت
110512

اينم جدول واريز
110513

roolinjax
پنج شنبه 21 شهریور 1392, 12:05 عصر
خوب عزیزم یه جدول تراکنش به جای این دو جدول بذار با فیلدهای زیر :
transCode
NoeHesab
ShomareHesab
SahebHesab
Tarikh
Mablagh
NameTranser !!!
NoeVariz
NoeTrans

اولا NameTranser یعنی نام کسی که تراکنش رو انجام داده !!!!
دوما منظورت از نوع واریز که توی جدول دوم گذاشتی چیه ؟ نقد و نسیه و چک و سفته ؟ اگر اینه که خوب برای حالت برداشت سیستم بصورت اتومات بهتره مقدار نقد برای این فیلد پر کنه.
سوما یه فیلد آخر (NoeTrans) هم نوع تراکنش یعنی برداشت یا واریز رو مشخص میکنه
ضمن اینکه به نظر شخصی من فیلد تاریخ رو از نوع تاریخ بذاری بهتره که بتونی بعدا عملیات تاریخ روش انجام بدی ، البته در مورد این مسئله بارها توی همین سایت بحث شده و نتایج مختلفی هم گرفته شده که خوب اگر جستجو کنی حتما با نظرات مختلفی برخورد میکنی . خود منم توی تاپیک های مختلف بحث کردم . (((((نظر شخصیمو گفتم)))))

mori5858
پنج شنبه 21 شهریور 1392, 15:31 عصر
دستت درد نكنه كوئري رو با دستور Union نوشتم مشكل حل شد :لبخند: