نمایش نتایج 1 تا 15 از 15

نام تاپیک: select تو در تو select * from table name where shart in (select * from tablename where shart)

  1. #1
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    select تو در تو select * from table name where shart in (select * from tablename where shart)

    سلام دوستانمن می خوام از یک select تو در تو استفاده کنم از یک کتاب دیدم ولی هر چی سعی کردم نشد. با وجودی که به همه مطالب کتاب با دقت عمل کردم.دوستانی که به این روش آشنایی دارند لطفا کمک کنن.در ضمن در موارد پیشرفته تر اون هم توضیحاتی بفرمایید . مثلا موقعی که ار select تو در تو استفاده می کنیم order by و یا group by و یا having چطور استفاده می شود با توجه به اینکه از چند select استفاده می کنیم.

  2. #2

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    سلام٬ مشکلت کجاست؟
    کار خاصی نباید انجام بدی٬ میتونی به عنوان مثال دور Select داخلی یک پرانتز بذاری٬ یا آخرش بنویسی AS TableName که یک اسم جدید بهش بدی٬ از این به بعد میتونی با این اسم روی Select داخلی query بزنی برای order by و یا group by هم به همین شکل.
    مثلا
    SELECT tbl.fld2, tbl.fld1 from
    (SELECT f1as fld1, f2 as fld2
    FROM t) AS tbl
    ORDER BY tbl.fld2

    نقل قول نوشته شده توسط mina.net مشاهده تاپیک
    سلام دوستانمن می خوام از یک select تو در تو استفاده کنم از یک کتاب دیدم ولی هر چی سعی کردم نشد. با وجودی که به همه مطالب کتاب با دقت عمل کردم.دوستانی که به این روش آشنایی دارند لطفا کمک کنن.در ضمن در موارد پیشرفته تر اون هم توضیحاتی بفرمایید . مثلا موقعی که ار select تو در تو استفاده می کنیم order by و یا group by و یا having چطور استفاده می شود با توجه به اینکه از چند select استفاده می کنیم.

  3. #3

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    فرض کن
    جدول Funcontract
    1- serial
    2-contractno
    و جدول FunCash
    1- serial
    2- contractref
    3-Amount
    4- Type
    موجود است و مثال 1 بااستفاده از یک Drive Table و مثال 2 هم دقیقا خروجی مشابه مثال 1 رو داره

    مثال 1

    Select Funcontract.Serial , D.Amount
    From Funcontract
    Inner Join (
    Select contractref, Sum(Amount) as Amount
    From FunCash
    Where Type = 1
    Group By contractref
    ) D on Funcontract.Serial = D.Contractref
    مثال 2

    Select Funcontract.Serial, Sum(FUNCash.Amount) as Amount
    From Funcontract
    Inner Join FunCash On Funcontract.Serial = Funcash.Contractref
    Where FunCash.Type = 1
    Group By FunContract.serial

  4. #4

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    نوعی select رو توی عنوان سوالت گذاشتی که دفعه اول ندیدم.
    select * from table name where shart in (select * from tablename where shart)
    در این حالت هم نباید مشکلی باشه٬ بگو مشکلت چیه. query ت رو بذار تا ببینیم.
    فقط یک نکته٬ توی select اول نوشتی شرط٬ اما اینجا شرط نیست٬ در این حالتی که نوشتی باید مثلا اسم یک ستون رو بنویسی (البته محدود به این هم نیستی):
    select * from table name where column_name in (select * from tablename where shart)
    کل قسمتی که از اسم ستون تا پایان select داخلی هست شرط select اولته. و هیچ ارتباط دیگه ای با SELECT اولت نداره. بنابراین وقتی در select اولی٬ order یا group by میکنی select دوم هیچ تاثیری نداره و به ستونهاش دسترسی نداری.

  5. #5
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    من مشکل خاصی ندارم الان فقط می خوام یاد بگیرم تا در فیلتر کردن های پیشرفته تر برای گزارشات از این روش هم در موارد لزوم استفاده کنم. لطفا توضیح بفرمایید فرمت اصلی این کدچی هست و در حالت های مختلف (مثل ...,sum,join , group by , order by) چطور باید استفاده بشه.

    select * from table name where column_name in (select * from tablename where shart)
    خوب حالا نتیجه دستور بالا با دستور زیر چه فرقی می کنه

    select * from tablename where shart


    منظورم اینه که where اول بی تاثیر خواهد بود اینطور نیست؟

  6. #6

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    select * from table name where column_name in (select * from tablename where shart
    نمی تونید در selection مربوطه از * استفاده کنید حتما نتیجه باید یک ستون را برگرداند.بنابراین :

    select * from table name where column_name in (select Col1 from tablename where ...whatever...


    تفاوت در اين است كه گاهی اوقات شما نياز دارین از مقادیری استفاده کنید که از یک جدول دیگر یا حتی همان جدول جاری بدست آمده ، به عنوان مثال فرض کنید Query داخلی نتیجه 12،13،22،93...را برگرداند سپس شما با اجرای یک Query تمام نتايج ستون هايي را كه مقادیرشان 12،13،22،93 است را برمي گردانید.
    البته گاهی اوقات select تو در تو را خيلي راحت مي توني با يك join ساده بنویسی پس توی استفاده اون دقت کن. سعي كن هميشه با ساده ترین و در عین حال بهینه به نتیجه برسی.اگر در جایی نیاز به استفاده از select تو در تو داری اون مثال را بگو تا بتونی ملموس تر دلیل استفاده از select را بفهمي

  7. #7

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    نقل قول نوشته شده توسط afrooz_rahmati63@yahoo.com مشاهده تاپیک
    نمی تونید در selection مربوطه از * استفاده کنید حتما نتیجه باید یک ستون را برگرداند.بنابراین :

    select * from table name where column_name in (select Col1 from tablename where ...whatever...

    حق با دوستمونه٬ من به این قسمتش دقت نکردم.

    خوب حالا نتیجه دستور بالا با دستور زیر چه فرقی می کنه
    کد:
    select * from tablename where shart
    منظورم اینه که where اول بی تاثیر خواهد بود اینطور نیست؟
    خب اون تیکه select دوم هم در واقع یک شرطه دیگه. به توضیحات afrooz_rahmati63@yahoo.com دقت کن

  8. #8
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    سلام دوستان

    نقل قول نوشته شده توسط afrooz_rahmati63@yahoo.com مشاهده تاپیک
    اگر در جایی نیاز به استفاده از select تو در تو داری اون مثال را بگو تا بتونی ملموس تر دلیل استفاده از select را بفهمي
    مثلا وقتی که از شرطهای زیادی برای select استفاده می کنیم مخصوصا وقتی از دو عملگر and , or همزمان استفاده می کنیم معمولا بین and, or تداخل ایجاد می شود و بازم معمولا عملگر or اثر شرطیهای دیگر را خنثی می کند. خوب اگرما بتونیم از select تو در تو استفاده کنیم می تونیم در یکی همه شروطی که با عملگر or هستند و در دیگری همه شروطی که با and همراه هستند را به کار بریم.
    من دوتا جدول تو برنامه ام دارم می زارم و سعی می کنم براساس اون سوال کنم فکر کنم اینطور بهتر حرف هم رو می فهمیم.
    جدول اول hesab
    1- id=برابر با id_hesabدر جدول bed_best
    2-name=نام
    3-city=شهر
    4-masir=مسیر

    جدول دوم bed_best
    1- id_hesab= برابر با id در جدول بالا
    2- bed= مبلغ بدهکاری
    3- best= مبلغ بستانکار

    فرض کنید می خواهیم یک گزارش پویا درست کنیم و به کار بر اجازه بدیم براساس احتیاجی که دارد گزارش مورد نظرش رو بدست بیاره.
    نکته : توجه داشته باشید که ما نمی تونیم یک select بنویسیم و تمام ، بلکه ممکنه با انتخابهای که به کاربر می دیم ترکیبات مختلفی از یک گزارش رو به دست بیاریم.

    خوب من در ادامه جدول دیگری را هم در این قسمت قرار می دهم تا بتونیم select های پیچیده تری رو هم بررسی کنیم.
    بزودی بر می گردم.
    آخرین ویرایش به وسیله mina.net : سه شنبه 13 مرداد 1388 در 12:55 عصر

  9. #9
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    سلام دوستان
    فرض کنید با توجه به دو جدولی در بالا قرار دادم می خواهیم "همه افراد بدهکار یا کسانی که مانده حسابشان 0 هست که از تهران هستند و از مسیر مثلا انقلاب هستند" رو پیدا کنیم . البته با یک select هم می شه ولی می خوام از select تو در تو استفاده بشه.

  10. #10
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    نقل قول نوشته شده توسط afrooz_rahmati63@yahoo.com مشاهده تاپیک
    نمی تونید در selection مربوطه از * استفاده کنید حتما نتیجه باید یک ستون را برگرداند.بنابراین :

    select * from table name where column_name in (select Col1 from tablename where ...whatever...


    تفاوت در اين است كه گاهی اوقات شما نياز دارین از مقادیری استفاده کنید که از یک جدول دیگر یا حتی همان جدول جاری بدست آمده ، به عنوان مثال فرض کنید Query داخلی نتیجه 12،13،22،93...را برگرداند سپس شما با اجرای یک Query تمام نتايج ستون هايي را كه مقادیرشان 12،13،22،93 است را برمي گردانید.
    البته گاهی اوقات select تو در تو را خيلي راحت مي توني با يك join ساده بنویسی پس توی استفاده اون دقت کن. سعي كن هميشه با ساده ترین و در عین حال بهینه به نتیجه برسی.اگر در جایی نیاز به استفاده از select تو در تو داری اون مثال را بگو تا بتونی ملموس تر دلیل استفاده از select را بفهمي
    سلام دوستان
    منظور از where column_name چیه ؟
    آیا نام فیلدها را بنویسیم یا شرط ؟
    من از کد زیر استفاده کردم ولی برای in خطای sintax می ده.

    select * from big_factor where city=N'آمل' in (select * from big_factor where type_f_kh=N'برگشت از خرید' or type_f_kh=N'فروش' )

  11. #11

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    وقتی از دستور این استفاده می کنی نمی تونی از * استفاده کنی روش درستش بصورت زیر است

    select * from
    big_factor
    where city=N'آمل'
    And serial in (
    select serial
    from big_factor
    where type_f_kh=N'برگشت از خرید' or type_f_kh=N'فروش'
    )

    البته به طور کلی این نوع Condition نوشتن اشتباهه مثلا برای چک کردن شهر شما باید یک جدول شهر داشته باشید و در جدول big_factor بجای نگه داشتن نام شهر از ref شهر که از جدول شهر هاتون است استفاده کنید

  12. #12
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    البته به طور کلی این نوع Condition نوشتن اشتباهه مثلا برای چک کردن شهر شما باید یک جدول شهر داشته باشید و در جدول big_factor بجای نگه داشتن نام شهر از ref شهر که از جدول شهر هاتون است استفاده کنید
    من برای نگهداری شهر ، مسیر و آدرس از جدول دیگری استفاده می کنم ولی برای اینکه بهتر حرف هم رو بفهمیم اینجا از یک جدول استفاده کردم.
    یک سوال آیا در select تو در تو فقط می توان نتیجه یک فیلد رو برگردوند؟ چون وقتی از فیلدهای بیشتری جهت select استفاده می کنم خطا می ده و می گه نباید بیشتر از یک فیلد باشه.
    برای حل این مشکل باید چیکار کرد؟
    یک سوال کلی تر
    برای اینکه عملگرهای and و or در نتیچه فیلتر با هم تداخل پیدا نکنن باید چیکار کرد؟

  13. #13

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    برای اینکه عملگرهای and و or در نتیچه فیلتر با هم تداخل پیدا نکنن باید چیکار کرد؟
    جای دیگه ای فکر میکنم در این مورد جواب داده شد٬ کافیه از پرانتز ها استفاده کنی.
    بحثی که میکنی٬ همون بحث تقدم عملگراست دیگه.

  14. #14

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    سلام دوستان
    راستش من اولین باریه که میخوام از سلکت تو در تو استفاده کنم . البته با سلکت معمولی زیاد کار کردم
    من میخوام از روش زیر پیش برم ولی همون طوری که خانم mina.net گفتن ارور syntaxt میده

    <script runat="server">
    Sub Page_Load()
    If Not Page.IsPostBack Then
    Dim con As New SqlConnection(ConfigurationManager.ConnectionStrin gs
    ("Database").ConnectionString)
    Dim str As String
    str = "SELECT * FROM Customers ORDER BY NO DESC WHERE Username IN(SELECT Username FROM
    MembersAccount WHERE Username = @username AND RegKey = @regKey"
    Dim cmdSelectFactors As New SqlCommand(str, con)
    cmdSelectFactors.Parameters.AddWithValue("@usernam e", Request.Cookies
    ("Members").Values.Item("Username"))
    cmdSelectFactors.Parameters.AddWithValue("@regKey" , Request.Cookies
    ("Members").Values.Item("RegKey"))
    Using con
    con.Open()
    cmdSelectFactors.ExecuteScalar()
    GridView_ViewFactors.DataSource = cmdSelectFactors
    GridView_ViewFactors.DataBind()
    End Using
    End If
    End Sub
    </script>

    به نظر شما مشکلش کجاست

  15. #15

    نقل قول: select تو در تو select * from table name where shart in (select * from tablename where sha

    نقل قول نوشته شده توسط hobab-theme مشاهده تاپیک
    سلام دوستان
    راستش من اولین باریه که میخوام از سلکت تو در تو استفاده کنم . البته با سلکت معمولی زیاد کار کردم
    من میخوام از روش زیر پیش برم ولی همون طوری که خانم mina.net گفتن ارور syntaxt میده
    چه خطایی؟ متن خطا رو بنویس.
    یه پرانتز هم احتمالا باید آخر دستور Select ت باشه٬ اون رو هم بزار.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •