PDA

View Full Version : ایرور more than 1 value در select



Sal_64
سه شنبه 26 آذر 1387, 14:21 عصر
سلام

من دو تا تیبل دارم
یکی که اطلاعات تکراری داخلش نیست به نام onvan دارای دو فیلد name و radif
و یکی دیگه اطلاعات تکراری داره به نام riz که دارای چند فیلد هست که یکیش radif

دستور سلکت زیر

select distinct name=(select name from onvan),cod,pol,radif from rizاین ایررور رو میده

Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.چه باید کرد؟

با تشکر

kiosksoft
سه شنبه 26 آذر 1387, 16:12 عصر
دوست عزیز سوالتون واضح نیست , بیشتر توضیح بدید که چی میخواین...

فکر میکنم مشکلتون با inner join حل بشه .

mannai29
سه شنبه 26 آذر 1387, 16:49 عصر
select درونی (select name from onvan) بیشتر از یک مقدار برمیگرداند ، بنابراین name درون آن نمی تواند برابر با چند مقدار قرار گیرد. تناظر یک به یک باید باشد.

Sal_64
سه شنبه 26 آذر 1387, 18:45 عصر
سلام


درونی (select name from onvan) بیشتر از یک مقدار برمیگرداند ، بنابراین name درون آن نمی تواند برابر با چند مقدار قرار گیرد. تناظر یک به یک باید باشد.بله همینطوره
اما جای تعجب اینجاست که برای اطمینان بیشتر رکوردهای تیبل onvan رو پاک کردم و تنها با دو رکورد امتحان کردم که شماره radif اونها هم متفاوته

اما مشکل هنوز مرتفع نشده

چه باید کرد ؟

با تشکر

ar.shirazi
سه شنبه 26 آذر 1387, 23:07 عصر
شما فقط گفته اید جدول onvan اطلاعات تکراری ندارد

کوئری زیر اصلا کوئری جالبی نیست:

select name from onvan

در حقیقت شما کلیه اسامی جدول را با این کوئری انتخاب میکنید!!!
و سپس میخواهید که آن را به این شکل به کار ببرید:


select distinct name=(select name from onvan),cod,pol,radif from riz

مسلم است که مشکل خواهد داشت. چون بیش از یک نام انتخاب شده است.

شما اول بگویید دقیقا میخواهید چه کنید؟

Sal_64
سه شنبه 26 آذر 1387, 23:34 عصر
سلام

من در جدول riz نام(name) رو ندارم
و می خوام اون رو از جدول onvan بگیرم

یعنی در جدول riz هر رکوردی که وجود داره name اون رو از تیبل onvan بگیرم
با شرط برابر بودن radif ها

با تشکر

Sal_64
پنج شنبه 28 آذر 1387, 16:34 عصر
سلام

دوستان می تونن راهنمایی کنن؟

با تشکر

ar.shirazi
پنج شنبه 28 آذر 1387, 17:49 عصر
سلام

من در جدول riz نام(name) رو ندارم
و می خوام اون رو از جدول onvan بگیرم

یعنی در جدول riz هر رکوردی که وجود داره name اون رو از تیبل onvan بگیرم
با شرط برابر بودن radif ها

با تشکر
خب در اینجا باید کوئری را محدود کنید

select distinct name=(select TOP(1) name from onvan where onvan.radif = riz.radif ),cod,pol,radif from riz

یا به این شکل:



select distinct onvan.name,riz.cod,riz.pol,riz.radif
from riz inner join onvan
on
onvan.radif = riz.radif