PDA

View Full Version : query



qazwsxedc
پنج شنبه 30 مهر 1383, 10:32 صبح
با سلام :)
من می خواستم بدونم چطور می شه برای دستوراتی که در sql وجود دارند query

تعریف کنم :mad:

AminSobati
پنج شنبه 30 مهر 1383, 20:38 عصر
لطفا در مورد هدفتون کمی بیشتر توضیح بدین

qazwsxedc
جمعه 01 آبان 1383, 08:39 صبح
با سلام
من میخواستم بدونم که چطوری می شه برای دستورات sql که من برای پاسخ گویی

به user ها با آنها سرو کار دارم یا برای report گیری query تعریف کنم

با تشکر مبینا :)

AminSobati
جمعه 01 آبان 1383, 22:15 عصر
دوست عزیزم،
شما تا جایی که میتونین باید دستور SELECT رو مطالعه بفرمایید و در صورت برخورد با مشکل، اینجا مطرح کنید. سوال شما خیلی کلیه و من احساس میکنم نیاز شما در حقیقت به آموزش در مورد دستور SELECT هست.
بهترین مرجعی که من میشناسم همون SQL Server Books Online هستش که توضیح کامل به همراه مثالهای فراوان در اون وجود داره. به عنوان پیشنهاد، این قسمت بسیار مفیده:

Transact-SQL Reference > SELECT > SELECT Examples
چنانچه به سوالی برخورد کردین، بنده و دوستان دیگه در این بخش کمکتون خواهیم کرد.
موفق باشید

qazwsxedc
شنبه 02 آبان 1383, 11:47 صبح
دوباره سلام

من دستورات رو بلدم در مورد اینکه برای این دستورات query بنویسم مشکل دارم

مثلاْ میخوام به جای
select *
from accounting
where username='gf'
order by start
فقط username رو بدم و از query استفاده کنم.
با تشکر
مبینا :گیج: [/quote]

AminSobati
شنبه 02 آبان 1383, 12:17 عصر
اگر منظورتون اینه که Query ثابته و فقط Username تغییر میکنه، پس بهتره اون رو تبدیل به Stored Procedure کنین:

CREATE PROC MyProc
@UName VARCHAR(30) AS
SELECT * FROM Accounting WHERE Username=@UName ORDER BY Start
GO
و هر بار که نیازه، با پارامتر دلخواه اون را Execute کنین:

EXEC MyProc 'Any value...'

qazwsxedc
دوشنبه 04 آبان 1383, 10:42 صبح
با سلام
خیلی از راهنمایی تون ممنونم واقعاْ کمکم کرد

با تشکر مبینا :sunglass:

AminSobati
دوشنبه 04 آبان 1383, 10:53 صبح
:)

qazwsxedc
دوشنبه 04 آبان 1383, 20:07 عصر
با سلام

اگه میشه یه مثال برای join کردن دو table متفاوت در صورت داشتن شرایط

برایم بزنید ممنون می شم :flower:

با تشکر مبینا :oops:

AminSobati
دوشنبه 04 آبان 1383, 20:24 عصر
این مثال رو از دیتابیس Northwind میزنم. دو جدول Customers و Orders در فیلد CustomerID مشترک هستند. در این Query، قصد داریم کد مشتری و تاریخ سفارشهای اون رو بدست بیاریم:


SELECT Customers.CustomerID, Orders.OrderDate FROM Customers
INNER JOIN Orders ON Customers.CustomerID=Orders.CustomerID
ORDER BY Customers.CustomerID

qazwsxedc
سه شنبه 05 آبان 1383, 10:48 صبح
با سلام میشه لطفاْ این مثال رو روی accounting , tac_user برام بزنید
چون من با این نرم افزاری که مثال زدید آشنایی ندارم :)

با تشکر مبینا :تشویق:

AminSobati
سه شنبه 05 آبان 1383, 11:21 صبح
Northwind نام دیتابیس نمونه ای هست که با نصب SQL Server، برای شما ایجاد میشه (و اکثر کتابها برای توضیح مثالهاشون از این دیتابیس استفاده میکنند)
اما Accounting رو بنده شناختی در موردش ندارم. لطفا حداقل دو جدول که با هم ارتباط دارند رو قید کنین (به همراه نام فیلدهاشون)
موفق باشین

qazwsxedc
سه شنبه 05 آبان 1383, 11:52 صبح
با سلام
مثلاْ از بانک accounting انهایی را که خاصیتی که مد نظرم بود را داشتند در sahar2
ریختم و بعد با tac_user join کردم جایی که timeinitial='60' باشه
SELECT sahar2.*, TAC_USR.*
FROM sahar2 INNER JOIN
TAC_USR ON sahar2.Username = TAC_USR.TAC_ID
WHERE (TAC_USR.TAC_Attr = '[Credits]timeinitial') AND (TAC_USR.TAC_Val = '60')
ORDER BY sahar2.Username
با تشکر مبینا امیدوارم مثالم واضح باشه :تشویق:

AminSobati
سه شنبه 05 آبان 1383, 12:03 عصر
Join رو که زحمت کشیدین و نوشتین، حالا سوالتون چیه؟

qazwsxedc
سه شنبه 05 آبان 1383, 12:49 عصر
سلام
میخوام بتونم برای این دستور و دستورات مشابهی که باهاشون کار میکنم query تعریف کنم و مثل اون دستوراتی که به من دادید ولی فکر می کنم برای join واینجور چیزا فرق کنه

ممنونم :oops: :مسخره:

AminSobati
سه شنبه 05 آبان 1383, 13:33 عصر
فرقی نمیکنه، همون کاری که انجام دادین Join هستش

qazwsxedc
چهارشنبه 06 آبان 1383, 19:52 عصر
سلام
من هنوز موفق نشدم join کنم و همین طور میخوام مثلاْ محدوده زمانی برای یک table تعیین کردم یا خاصیتی برایش تعیین کردم مثل آنهایی که timeleft=0 را در یک table جدا از بانک اصلی ام بریزم که در حالت عادی از دستور in to استفاده می کردم لطفاْ من رو راهنمایی کنید :cry:
با تشکر مبینا

AminSobati
چهارشنبه 06 آبان 1383, 20:26 عصر
من هنوز موفق نشدم join کنم
پس دستور Join که خودتون نوشته بودین چی بود؟!...

qazwsxedc
پنج شنبه 07 آبان 1383, 11:30 صبح
من نوشتم اما می خوام همین دستورو به query تبدیل کنم مثل بقیه دستورات که تبدیل کردم منتها این یه مقدار پیچیده تره اگه لطف کنید یه مثال بزنید یعنی همین دستور join من رو به query تبدیل کنید
با تشکر :wink:

AminSobati
جمعه 08 آبان 1383, 00:17 صبح
دستوری که با SELECT نوشته بشه، همون Query هستش. Query گاهی ساده، و گاهی با Join همراهه..

qazwsxedc
شنبه 09 آبان 1383, 12:08 عصر
سلام
میدمنم که تقریباْ روش همونطور اما اگه لطف کنید اون دستوری رو که من براتون نوشتم رو به query کنید ممنون می شم
با تشکر مبینا :cry:

AminSobati
شنبه 09 آبان 1383, 12:50 عصر
ممکنه لطف کنین یک مثال از Query اینجا بنویسین تا من متوجه بشم منظور شما از Query چیه..

qazwsxedc
شنبه 09 آبان 1383, 13:17 عصر
سلام
CREATE PROC dr
@UName VARCHAR(30) AS
SELECT * FROM Accounting WHERE Username=@UName ORDER BY Start
GO
که در اینصورت فقط اینو مینویسم exec dr '@uname'
که در حقیقت این دستور را با نوشتن Query بالا فقط از این خط دستوری کوتاه استفاده می کنم exec dr '@uname' دستوری که تبدیل شده =============
select *
from accounting
where username ='@uname'
order by start

AminSobati
شنبه 09 آبان 1383, 15:49 عصر
به نظر میرسه شما منظورتون اینه که برای یک Query میخواین Stored Procedure بسازین!
اگر Query ما این باشه:

SELECT sahar2.*, TAC_USR.*
FROM sahar2 INNER JOIN
TAC_USR ON sahar2.Username = TAC_USR.TAC_ID
WHERE (TAC_USR.TAC_Attr = '[Credits]timeinitial') AND (TAC_USR.TAC_Val = '60')
ORDER BY sahar2.Username

و دو فیلدی که در WHERE به کار رفتند رو به عنوان دو پارامتر در نظر بگیریم:

CREATE PROC MyProc2
@Param1 nvarchar(50),
@Param2 nvarchar(50)
AS

SELECT sahar2.*, TAC_USR.*
FROM sahar2 INNER JOIN
TAC_USR ON sahar2.Username = TAC_USR.TAC_ID
WHERE (TAC_USR.TAC_Attr = @Param1) AND (TAC_USR.TAC_Val = @Param2)
ORDER BY sahar2.Username

حالا برای اجرا:

EXEC MyProc2 '[Credits]timeinitial','60'

qazwsxedc
شنبه 09 آبان 1383, 18:09 عصر
خیلی خیلی خیلی خیلی ممنونم واقعاْ دستتون درد نکنه نمی دونم دیگه چی بگم که بدونین از همکاریتون با من خیلی ممنونم :flower: :تشویق:

فقط ببخشید اگه بازم سوال داشتم مزاحمتون بشم :متفکر:



با تشکر مبینا :flower: :flower: :flower: :flower:

AminSobati
شنبه 09 آبان 1383, 18:56 عصر
موفق باشین

qazwsxedc
یک شنبه 10 آبان 1383, 13:14 عصر
سلام
من دوباره اومدم
من داخل دستوراتم قبلاض از into استفاده می کردم اما تو این محیط وقتی می خوام براش تعریف کنم نمی شناسه چی کار کنم من اینجوری می گفتم الان چه جوری بگم لطفا
select *
from accounting
into mobina
where username ='dd'
با تشکر مبینا :تشویق:

AminSobati
یک شنبه 10 آبان 1383, 13:39 عصر
INTO و نام جدول جدید باید بلافاصله بعد از نام فیلد (*) قرار بگیره

qazwsxedc
یک شنبه 10 آبان 1383, 14:22 عصر
نام جدول جدید رو با چه فیلدی نشون بدم
ممنونمممممممممممممممممممم مممممممممممم :sorry:

AminSobati
یک شنبه 10 آبان 1383, 21:44 عصر
مثلا:

SELECT * INTO MyNewTable FROM ExistingTable

qazwsxedc
دوشنبه 11 آبان 1383, 11:57 صبح
خیلی ممنون :flower: :D

AminSobati
دوشنبه 11 آبان 1383, 13:13 عصر
موفق باشین

nima_north
دوشنبه 11 آبان 1383, 13:28 عصر
توضیحات بسیار جالب بود
ممنون.

qazwsxedc
سه شنبه 03 آذر 1383, 18:38 عصر
با سلام
من دوباره احتیاج به کمک دارم من کاری کنم که در sql قبل از اینکه import کنم از من username, pass بخواد و به این وسیله کسی جز خودم که pass رو می دونم نتونه چیزی رو import کنه


با تشکر مبینا :thnx:

qazwsxedc
سه شنبه 03 آذر 1383, 18:39 عصر
با سلام
من دوباره احتیاج به کمک دارم من کاری کنم که در sql قبل از اینکه import کنم از من username, pass بخواد و به این وسیله کسی جز خودم که pass رو می دونم نتونه چیزی رو import کنه


با تشکر مبینا :thnx:

qazwsxedc
سه شنبه 03 آذر 1383, 18:47 عصر
خیلی برام مهمه لطفا اگه می شه هر چه سریعتر منو راهنمایی کنین
:تشویق:

MiRHaDi
چهارشنبه 04 آذر 1383, 22:36 عصر
سلام
خوب براش پسورد Set کن ! داره خودش گزینشو ! اگه میخوای دسترسی تعریف کنی که بحث فرق داره
بای

setarehman
پنج شنبه 05 آذر 1383, 07:49 صبح
فرمایش mirhadi درسته باید یه یوزر و پسورد برای بانک تعریف کنی
گرچه کسی که وارد باشه راحت میتونه از این مرحله رد بشه ولی خوب دیگه برای هر کسی مقدور نیست
وارد بانک بشه
میتونی در قسمت security هم دسترسی لازم رو به کاربران داد

AminSobati
پنج شنبه 05 آذر 1383, 19:42 عصر
با سلام
من دوباره احتیاج به کمک دارم من کاری کنم که در sql قبل از اینکه import کنم از من username, pass بخواد و به این وسیله کسی جز خودم که pass رو می دونم نتونه چیزی رو import کنه

اگر در مورد ایجاد Security مشکل دارین، لطفا بفرمایید که دقیقا از کدوم امکان SQL Server برای Import استفاده میکنین تا بهتر بشه راهنماییی کرد. چون SQL Server سه وسیله برای این کار داره.

qazwsxedc
یک شنبه 13 دی 1383, 09:59 صبح
سلام وخسته نباشید میخواستم ازتون خواهش کنم این دستورات را برام در یک در stored procedure جا بدید لطفا

select *
into new table
from table
where start>='1/1/2004'and start<='1/1/2005'



SELECT newtable.*, table1.*
into newtable 2
FROM newtable INNER JOIN
table1 ON newtable.uname = table1.tac
where tac_attr='ghg'and tac_val='hghj'


SELECT newtable2.*, table1.*
FROM newtable2 INNER JOIN
table1 ON newtable2.uname = table1.tac
where tac_attr='ghg'and tac_val='hghj'



با تشکر :thnx: :thnx: :thnx: :thnx: :thnx: :thnx:

AminSobati
دوشنبه 14 دی 1383, 13:11 عصر
لطفا عین کاری که در صفحه قبل انجام شده عمل بفرمایید!
http://www.barnamenevis.org/forum/viewtopic.php?t=16118&postdays=0&postorder=asc&start=20

qazwsxedc
دوشنبه 14 دی 1383, 13:58 عصر
دوباره سلام
منظورتونو متوجه نشدم
خوب چی می شه حالا برام بنویسید من قول می دم خوب یاد بگیرم
:flower: :flower: :flower: :flower: :flower:

qazwsxedc
چهارشنبه 16 دی 1383, 12:17 عصر
خوب شما که اینقد تا حالا به من کمک کردین چرا دیگه کمک نمیکیند من واقعا به کمک شما احتیاج دارم خواهش می کنم سریعتر به من جواب بدید please
:thnx: :thnx: :thnx: :thnx: :thnx: :thnx: :thnx: :thnx: :thnx: :thnx: :thnx: :تشویق: :تشویق: :تشویق: :تشویق: :تشویق:

AminSobati
جمعه 18 دی 1383, 18:00 عصر
دوست عزیزم،
ما علاقه مندیم که شما یاد بگیرین، و اگر نه کمک کردن در نوشتن برنامه مشکلی نیست. هر بار که من مطلبی اینجا Post میکنم، آرزو میکنم که اون فرد بتونه در این زمینه راهش رو ادامه بده و از دیگران بی نیاز بشه..
موفق باشید


create proc Proc1
@P1 datetime,
@P2 datetime
as
select *
into newtable
from table1
where start>=@p1 and start<=@p2
go


create proc Proc2
@p1 nvarchar(20),
@p2 nvarchar(20)
as
SELECT newtable.*, table1.*
into newtable2
FROM newtable INNER JOIN
table1 ON newtable.uname = table1.tac
where tac_attr=@p1 and tac_val=@p2
go

create proc Proc3
@p1 nvarchar(20),
@p2 nvarchar(20)
as
SELECT newtable2.*, table1.*
FROM newtable2 INNER JOIN
table1 ON newtable2.uname = table1.tac
where tac_attr=@p1 and tac_val=@p2
go

vadood
شنبه 19 دی 1383, 13:49 عصر
خوب شما که اینقد تا حالا به من کمک کردین چرا دیگه کمک نمیکیند من واقعا به کمک شما احتیاج دارم خواهش می کنم سریعتر به من جواب بدید

دوست عزیز،

من تا به حال توی این تاپیک شرکت نکرده بودم و الان که همه‌اش را می خونم این احساس بهم دست میده که شما دارین کارتون را قدم به قدم این جا به کمک دیگران انجام می دین.
البته این خیلی عالیه که ما به همدیگه کمک کنیم اما توجه کنید که فوروم ماهیتش باید یه جوری باشه که بحثی پیش بیاد که چند نفر بیان توش شرکت کنن و موضوعی داشته باشه که بعدا هم کس دیگه ای در جستجو دنبال اون موضوع بتونه بهش مراجعه کنه
این برخورد شما با قضیه که تصور می کنید هدف فوروم کمک به حل مشکلاتی است که شما قدم به قدم در مسیر کارتون براتون پیش می آد به نظر من درست نیست. همین تعداد flowerها و thank youهای هم شما حتما این رو به خودتون ثابت می کنه و حرف من رو رد نمی کنین.

به هر حال، تا جایی که شیوه کار فوروم هست:
1- هر تاپیک باید موضوع مشخصی داشته بشه و حول اون موضوع بحث بشه
2- عنوان تاپیک باید گویا باشه
لطفا رعایت کنید،

qazwsxedc
شنبه 26 دی 1383, 12:46 عصر
سلام
باید در جواب بگم این چیزهایی که برای من نوشتید رو خودم انجام داده بودم و نیاز من فرا تر از این بود در ضمن
من خودم با نوشتن یه سری از دستورات مانند join در حقیقت تبادل اطلاعات کردم و فقط اطلاعات نگرفتم در ضمن
- عنوان تاپیک باید گویا باشه به نظر من از این گویاتر نمیتونه باشه یعنی از خیلی از موارد بهتره که آدم وقتی میره توش تازه می فهمه در مورد چی می خواد بحث بشه ودیگه اینکه من فقط چون خودم مدیون کسی که یه سری اطلاعات به من داد می دونستم و جور دیگه ای نمی تونستم تشکر کنم فقط توسط همین :thnx: و :flower: میتونستم بگم که ازشون ممنونم و از نظر من تشکر کردن از کسی که چیزی به آدم یاد می ده فقط ادب رو می رسونه وگرنه اون شخص نیازی به تشکر من نداره و شما هستید که می گید این تاپیک زیاد مفید نبوده اما اگه با دقت مطالعه کرده باشید حتما دیدید که از مطالب عنوان شده بسیار هم تشکر شده ومطلب دیگه ای که باید خدمتتون بگم این هست که من sql رو نه توسط کتاب . نه توسط کلاس یاد گرفتم ولی با این با توضیح هایی که به من دادند واقعا خیلی تونستم برنامه هایی که می خواستم رو بنویسم اما این بار من این دستورات رو در اپرده بودم حتی چیزی فراتر اما من چیز دیگه ای می خواستم که مزاحم شدم بای