ورود

View Full Version : سوال: ارتباط چند جدول بهم



seyed.javad.majidi
چهارشنبه 02 مرداد 1392, 02:06 صبح
سلام نمی دونم عنوان تاپیک رو درست نوشتم یا نه ولی سوالم اینه:)


select * from event where id_user=
(select id_user2 from frn where id_user1=123)
or
id_user=(select id_user1 from frn where id_user2=123) or id_user=123 order by id desc LIMIT 0 , 10


اون دو کوئری که در پرانتز هستن بیش از چند رکورد بر میگردونه (که منم همینو میخوام و انجام میشه) اما کد کار نمیکنه.
چیزی که من میخوام اینه:
من میخوام از جدول event رکورد هایی لود بشه که id_user اون یا 123 باشه یا id_user هایی که id_user2 اونها 123 یا id_user1 اونها برابر با 123 هست یعنی این دوتیکه آخر بیش از چند رکورد برمیگردونه کلا این میشه داده هایی از جدول event برگردونه که یا 123 یا از این تعداد id_user هایی که از جدول frn کشیدیم باشه.


ممنون میشم کمکم کنید :)

HidDeN_OutX.Exe
چهارشنبه 02 مرداد 1392, 02:42 صبح
public static DataTable GetData()
{




SqlConnection Connect = new SqlConnection("Data Source="+Dns.GetHostName()+";Initial Catalog=Store;Integrated Security=True");
SqlCommand Command = new SqlCommand("Select * From YourTable WHERE YourColumnName=X", Connect);
SqlDataAdapter Adapter = new SqlDataAdapter();
Adapter.SelectCommand = Command;
DataTable Table = new DataTable();
Connect.Open();

try
{
Adapter.Fill(Table);
if (a == 0)
{
MessageBox.Show("نــام سیـــستم شمــا صحیــح میــباشد " + "شمـــا با موفقیـــت بـــه بانک اطلــاعاتی مــــا وصـــل شدیــد", "اتـــصال", MessageBoxButtons.OK, MessageBoxIcon.Information);
a = 10;
}
}
catch (SqlException Erorr)
{

MessageBox.Show("Seem You Have Erorr" + Erorr.Message);
}
finally
{
Connect.Dispose();
}
return Table;
}


یه نمونه سورس سوالی بود در خدمتیم :چشمک:

seyed.javad.majidi
چهارشنبه 02 مرداد 1392, 02:56 صبح
سلام
دوست عزیز این جواب سوال منه!؟
من از کدتون چیزی نفهمیدم :( میشه بیشتر توضیح بدید؟
من دارم رو php این کوئری رو استفاده میکنم
راستی اگه امکان داره داده ها و جداولی که در اول گفتم رو درکدتون استفاده کنین تا بدونم چی به چیه /
ممنون دوست عزیز

HidDeN_OutX.Exe
چهارشنبه 02 مرداد 1392, 03:46 صبح
:لبخند: داداش متوجه نشدی ؟:متعجب:

این سورس #C

شما نگفته بودی واسه PHP :گیج:

در اینصورت هر کس که بخواد جواب بده اون

چیزو میگه که میدونه :بامزه:

شاید یکی دیگه جامن سورس VB شو میزاشت :اشتباه:



بحرحال شما یه ندایی قبلش میدادین

موفق باشید ;

بهزاد علی محمدزاده
چهارشنبه 02 مرداد 1392, 04:17 صبح
شما باید برای پاسخ دادن به این تاپیک ها , سورس SQL قرار بدین . یا SQL طرف رو اصلاح کنید . یا راهنمایی . سوال ایشون با کد SQL داخل دستورات شما فرق می کنه . این فقط با یه جدول کار می کنه ایشون می خواد با دو جدول ارتباط برقرار کنه .
----------------------------------------------------------------
این کدی که گذاشتین اول اینکه احتمالا یه جایی هم از طراحی تون اشکال داره . اما درون کد تشخیصش سخته که چیکار می خواد بکنید . ولی چند گزینه ایی به نظرم اضافه بود . این و امتحان کن ببین حل میشه یا نه .

select *
from event
where id_user = (
select id_user2
from frn
where id_user1=123
)or
( select id_user1
from frn
where id_user2=123
) order by id desc LIMIT 0 , 10

seyed.javad.majidi
چهارشنبه 02 مرداد 1392, 20:21 عصر
سلام دوستان کار نکر :(
من یه کار عجیبی کردم:


$s='';
$result=mysql_query('select id_user2 from frn where id_user1=123);
if(!$result || !mysql_num_rows($result))
{
//echo 'Error_not_EVENT';
}
else
{
while($row=mysql_fetch_array($result))
{
$s=$s.' id_user='.$row['id_user2'].' or ';
}
}
$result1=mysql_query('select id_user1 from frn where id_user2=123');
if(!$result1 || !mysql_num_rows($result1))
{
//echo 'Error_not_EVENT';
}
else
{
while($row=mysql_fetch_array($result1))
{
$s=$s.' id_user='.$row['id_user1'].' or ';
}
}

بعد متغییر s رو تو دستور کلی قرار دادم:

$res=mysql_query('select * from event where '.$s.' id_user=123 order by id desc LIMIT 0 , 10',$d);

یعنی من میام جمله کوئری رو میسازم کار میکنه ولی یه سوال یک دستور sql آیا محدودیت کاراکتر نداره هر دستور sql چند کاراکتر میتونه باشه؟
دوستان بنظر خودم این کاری که کردم خیلی خیلی اشتباهه و فعلا برای دلخوشی خودم درستش کردم که فقط کار کنه اگه میتونین بگید تا یه دستور sql براش بنویسم :(

afshin9032
پنج شنبه 03 مرداد 1392, 17:21 عصر
سلام نمی دونم عنوان تاپیک رو درست نوشتم یا نه ولی سوالم اینه:)


select * from event where id_user=
(select id_user2 from frn where id_user1=123)
or
id_user=(select id_user1 from frn where id_user2=123) or id_user=123 order by id desc LIMIT 0 , 10


اون دو کوئری که در پرانتز هستن بیش از چند رکورد بر میگردونه (که منم همینو میخوام و انجام میشه) اما کد کار نمیکنه.
چیزی که من میخوام اینه:
من میخوام از جدول event رکورد هایی لود بشه که id_user اون یا 123 باشه یا id_user هایی که id_user2 اونها 123 یا id_user1 اونها برابر با 123 هست یعنی این دوتیکه آخر بیش از چند رکورد برمیگردونه کلا این میشه داده هایی از جدول event برگردونه که یا 123 یا از این تعداد id_user هایی که از جدول frn کشیدیم باشه.


ممنون میشم کمکم کنید :)

اگر اشتباه نکرده اینچور که شما نوشتین ، میخواهید که چند مقدار مقایسه بشه که در این صورت نباید از = استفاده کنیئ و باید به جای اون از IN استفاده کنید . ],چون این کوئری های داخل پرانتز ممکن است چند مقدار برگرداند .
کد اصلاحی :
select * from event where id_user IN
(select id_user2 from frn where id_user1=123)
or
id_user IN (select id_user1 from frn where id_user2=123) or id_user=123 order by id desc LIMIT 0 , 10