PDA

View Full Version : تركيب دو Query با هم!؟



soheil_programmer
دوشنبه 13 مهر 1388, 20:25 عصر
با سلام

آقا من يك جا گير كردم!
ما يك گزارش داريم كه در اون علاوه بر نمايش تمامي ركوردهاي يك Table ؛ در يك فيلد از گزارش نياز هست يك query‌ ديگر وارد عمل شده و يك حاصل جمع را در شرايط خاصي در آن فيلد از گزارش نمايش دهد.
چگونه اين عمل امكان پذير است؟

MOJTABAATEFEH
دوشنبه 13 مهر 1388, 20:43 عصر
دوست عزيز تركيب Query ها رو مي توني با UNION انجام بدي :
(در يك دستور كد زير رو استفاده كن)



Query1 Union Query2



موفق باشي

soheil_programmer
دوشنبه 13 مهر 1388, 20:49 عصر
ميشه يه مثال تفصيلي تر بزنيد؟؟


دوست عزيز تركيب Query ها رو مي توني با UNION انجام بدي :
(در يك دستور كد زير رو استفاده كن)



Query1 Union Query2



موفق باشي

محمد سلیم آبادی
دوشنبه 13 مهر 1388, 20:57 عصر
سلام،
شما می تونین از Subquery در قسمت لیست ستون های query استفاده کنید.

به طور مثال

select *, col1=(select 1*2)
from tbl_1

soheil_programmer
دوشنبه 13 مهر 1388, 21:19 عصر
دوست عزيز من دستور شما ره امتحان كردم و با خطاي "ناشناخته بودن نام فيلد col1" مواجه شدم!
ضمناً منظورتون را از select 1*2 نفهميدم!!


سلام،
شما می تونین از Subquery در قسمت لیست ستون های query استفاده کنید.

به طور مثال

select *, col1=(select 1*2)
from tbl_1

محمد سلیم آبادی
دوشنبه 13 مهر 1388, 21:23 عصر
این کد فقط یک مثال بود!
منظورم از کد select 1*2 این است که ما میتوانیم از یک select مجزا در قسمت لیست ستون ها استفاده کنیم.

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

و حتما باید ساختار جداول خودتان را ارسال کنید

soheil_programmer
دوشنبه 13 مهر 1388, 21:32 عصر
دوست عزيز فرض بگيريد ما يك Table فاكتور داريم كه يك فيلد شماره فاكتور داره حال ممكنه ما در ميان ركوردهامون هر از گاهي چند شماره فاكتور يكسان داشته باشيم در نهايت ما يك گزارش ميخواهيم كه تعداد اين شماره فاكتورهاي يكسان را در جلوي اون تعداد ركوردي كه يكسانند بزنه!
نمونه هم گذاشتم.... البته تعداد فيلدهاي ما بيشتر است و من فقط نمونه اصلي را گذاشتم.



این کد فقط یک مثال بود!
منظورم از کد select 1*2 این است که ما میتوانیم از یک select مجزا در قسمت لیست ستون ها استفاده کنیم.

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

و حتما باید ساختار جداول خودتان را ارسال کنید

محمد سلیم آبادی
دوشنبه 13 مهر 1388, 21:42 عصر
با کمک Grouping و Semi-join این کار امکان پذیر است.
به طور خلاصه باید جدول فاکتور ها را بر اساس کد فاکتور گروه بندی کنید و با کمک تابع Aggregation ، Count تعداد کد فاکتور را بدست آورین و سپس با کمک left join و Derived table کار را به اتمام برسانین.

اگر می خواهین Query را ایجاد کنم باید به ساختار جدولتان دسترسی داشته باشم برای این منظور می توانین از آن Script تهیه کنید و در این تاپیک پست کنید.

محمد سلیم آبادی
دوشنبه 13 مهر 1388, 22:05 عصر
SELECT
T.FactorNo AS [Factor No],
T.CustomerName AS [Customer Name],
D.C AS [Total]
FROM
Table1 T
LEFT JOIN
(
SELECT
FactorNO,
C=COUNT(*)
FROM
Table1
GROUP BY
FactorNo
) AS D ON D.FactorNo = T.FactorNo

soheil_programmer
دوشنبه 13 مهر 1388, 22:10 عصر
دوست من لطفاً روي همين مثال من شما نمونه Query را بنويسيد كه منم متوجه بشم. اونوقت اگه نشد زحمتتون ميدم...

بازم ممنون.


با کمک Grouping و Semi-join این کار امکان پذیر است.
به طور خلاصه باید جدول فاکتور ها را بر اساس کد فاکتور گروه بندی کنید و با کمک تابع Aggregation ، Count تعداد کد فاکتور را بدست آورین و سپس با کمک left join و Derived table کار را به اتمام برسانین.

اگر می خواهین Query را ایجاد کنم باید به ساختار جدولتان دسترسی داشته باشم برای این منظور می توانین از آن Script تهیه کنید و در این تاپیک پست کنید.

محمد سلیم آبادی
دوشنبه 13 مهر 1388, 22:46 عصر
دوست من لطفاً روي همين مثال من شما نمونه Query را بنويسيد كه منم متوجه بشم. اونوقت اگه نشد زحمتتون ميدم...

بازم ممنون.

پست شماره ی 9 را ببنید

soheil_programmer
سه شنبه 14 مهر 1388, 07:38 صبح
با سلام

دوست عزیز من متاسفانه موفق به استفاده از دستور فوق نشدم و با خطاهای متعدد مواجه شدم راستی فراموش کردم بگم من از mysql در vb استفاده میکنم و شاید خطاها نیز به این دلیل باشند!


پست شماره ی 9 را ببنید

محمد سلیم آبادی
سه شنبه 14 مهر 1388, 08:36 صبح
تا اونجایی که می دونم Syntax دستورات MySQL با SQL Server متفاوت است.

شما باید در تالار مربوطه تاپیک را ایجاد می کردین

soheil_programmer
سه شنبه 14 مهر 1388, 15:42 عصر
با سلام

دوست عزيز بنده عمداً سوالم را در اين انجمن مطرح كردم چون همانطور كه پيش بيني ميكردم سوالم در انجمن mysql‌ نتيجه نگيرد، همان هم شد چون اين انجمن به اون صورت طرفدار نداره! :ناراحت:
http://barnamenevis.org/forum/showthread.php?t=183159



تا اونجایی که می دونم Syntax دستورات MySQL با SQL Server متفاوت است.

شما باید در تالار مربوطه تاپیک را ایجاد می کردین