PDA

View Full Version : error SQL server



sheida-peyravi
شنبه 14 مهر 1386, 13:22 عصر
مفهوم این خطا چیست؟ Ambiguous column name'studenoاین خطا در حین ساخت store procedureبوجود می آید که در ابتدا نبمد اما الان خطا میدهد.
در ضمن برای امتحان کردنSP که آیا درست عمل می کند یا خیر چه باید بکنم؟
با تشکر

vcldeveloper
شنبه 14 مهر 1386, 15:51 عصر
مفهوم این خطا چیست؟ Ambiguous column name'studenoاین خطا در حین ساخت store procedureبوجود می آید که در ابتدا نبمد اما الان خطا میدهد.
یعنی در query ایی که نوشتید، نام فیلدی وجود داره که در دو یا چند جدول تکرار شده و شما بدون آنکه مشخص کنید منظور شما فیلد مربوط به کدامیک از این جداول هست، سعی در اجرای کوئری دارید. برای مثال، شما دو جدول دارید (مثلا Table1 , Table2) که هر دو فیلدی به نام StudentNo دارند، اگر SELECT ایی بنویسید و در آن بخواید رکوردهایی را از هر دو جدول بدست بیارید، SQL Server متوجه نمیشه که منظور شما StudentNo از Table1 هست، یا StudentNo از Table2. برای رفع این مشکل باید قبل از نام فیلد، نام جدول را هم قید کنید، مثلا اگر منظور شما فیلد موجود در Table1 هست، بنویسید: Table1.StudentNo


در ضمن برای امتحان کردنSP که آیا درست عمل می کند یا خیر چه باید بکنم؟
خب، اجراش کنید (با دستور EXEC) و ببینید نتایج مورد نظر شما را برمی گرداند یا نه.

Ehsan Valinouri
پنج شنبه 06 تیر 1387, 01:46 صبح
با سلام. من با اروری مشابه ارور دوستمون مواجه میشم یعنی "Ambiguous Column Name" در حالی که من Select رو روی یک Table انجام میدم و طبیعتا ابهامی از نظر انتخاب فیلد نداره.

اینم متن کد Stored Procedure من:


Create PROCEDURE dbo.sp_Search
(@Keyword nvarchar(50) )


AS
select distinct Stuf_ID from tbl_Stuf_Property where Stuf_Property_ID IN
(select Stuf_Property_ID from tbl_nText_Value,tbl_Numeric_Value,tbl_Text_Value where tbl_nText_Value.nText_Value like N'%'+@Keyword+'%' or tbl_Numeric_Value.Numeric_Value like '%'+@Keyword+'%' or tbl_Text_Value.Text_Value like '%'+@Keyword+'%')

RETURNو با ارور Ambiguous Column Name 'Stuf_Property_ID' مواجه میشم. میشه راهنمایی کنید؟

vcldeveloper
پنج شنبه 06 تیر 1387, 03:04 صبح
با ارور Ambiguous Column Name 'Stuf_Property_ID' مواجه میشم. میشه راهنمایی کنید؟
هر جا stuf_Property_ID دارید، قبلش نام جدول را هم ذکر کنید، مثلا: tbl_Stuf_Property.Stuf_Property_ID

Ehsan Valinouri
پنج شنبه 06 تیر 1387, 08:58 صبح
درست می فرمائید. کمی بعد از زدن این پست این کار رو کردم اما ایراد دیگری گرفت مبنی بر اینکه در لیست Select ای که SubQuery اش Exists ندارد نمی توان بیش از یک Expression وارد کرد من هم به ناچار Query رو به شکل زیر تغییر دادم:


select Stuf_ID from tbl_Stuf_Property where Stuf_Property_ID in
((select tbl_Text_Value.Stuf_Property_ID from tbl_Text_Value where tbl_Text_Value.Text_Value like '%'+@Keyword+'%')
,(select tbl_nText_Value.Stuf_Property_ID from tbl_nText_Value where tbl_nText_Value.nText_Value like N'%'+@Keyword+'%')
,(select tbl_Numeric_Value.Stuf_Property_ID from tbl_Numeric_Value where tbl_Numeric_Value.Numeric_Value like '%'+@Keyword+'%'))


آیا راه بهتری به ذهنتان میرسد؟