PDA

View Full Version : بازگرداندن یک رکورد



ayub_coder
یک شنبه 04 تیر 1391, 22:09 عصر
سلام دوستان
من دوتا تیبل دارم


person{person_id,person_name}
times{time_id,time_person_id,time_time}

واسه هر person ممکنه چند تا time ثبت بشه(حالا فرض کنید تایم با مقادیر 1و2و3) حالا تو select که میزنم


SELECT * FROM person,times WHERE person_id=time_person_id AND time>0 AND time<5

3 تا رکورد به این شکل بر میگردونه
person time1
person time2
person time3
طبیعتا این سه تا رکورد بر میگردونه. ولی من به یکی احتیاج دارم. من فقط به همون person احتیاج دارم.با DISTINCT هم که نمیشه چون رکوردها شبیه نیستن.limit هم نمیشه بکار برد چون تعداد رکوردا زیاده. چطور میشه انکارو کرد؟ یعنی واسه هر رکورد یکی از اون تایم ها برگرده؟

mbf5923
دوشنبه 05 تیر 1391, 20:47 عصر
خوب مسئله اینه که به کدوم احتیاج دارین؟همون میتونه شرطی رو تعیین کنه که یک رکورد برگردونده بشه

ayub_coder
دوشنبه 05 تیر 1391, 20:58 عصر
ما دقیقا نمی دونیم کدوم از اونا ولی هرکدوم باشه فرقی نداره فقط یکی برگرده

mbf5923
دوشنبه 05 تیر 1391, 22:24 عصر
خوب Limit
اما اینکه فرمودین تعداد رکوردا زیاده چه ربطی به مسئله داره؟

ayub_coder
دوشنبه 05 تیر 1391, 22:59 عصر
خوب Limit
اما اینکه فرمودین تعداد رکوردا زیاده چه ربطی به مسئله داره؟

چون ما چندین person داریم. اگه limit استفاده کنیم یه person برگشت داده میشه. در صورتی که ما تمامی person ها رو می خوایم ولی به یکی از تایم ها نیاز داریم. و اینکه where بر روی تایم ها اعمال میشه.

mtchabok
دوشنبه 05 تیر 1391, 23:48 عصر
سلام
میتونین از group by استفاده کنین .

group by person

saji2056
سه شنبه 06 تیر 1391, 02:45 صبح
دوست عزیز
این کوئری که شما نوشتید کلا یه رکورد رو برمیگردونه
یعنی اگر شما کوئری خودتون رو تو حلقه while قرار ندين 1 رکورد بیشتر برنمی گردونه!!
نیاز به نوشتن هیچ کوئری خواستی نداره!!
در ضمن برای اینکه دیتابیس خودتون رو سنگین نکنید بهتر ِ رکورد قبلی که از یه person در time دارید رو update کنید تا دچار ازدحام اطلاعات نشید!!

ayub_coder
سه شنبه 06 تیر 1391, 08:57 صبح
این کوئری که شما نوشتید کلا یه رکورد رو برمیگردونه
این سه تا برمیگردونه یا هر تعداد تایمی که داشته باشه.!

در ضمن برای اینکه دیتابیس خودتون رو سنگین نکنید بهتر ِ رکورد قبلی که از یه person در time دارید رو update کنید تا دچار ازدحام اطلاعات نشید!!
مجبورم این کار رو بکنم!

MMSHFE
سه شنبه 06 تیر 1391, 13:30 عصر
SELECT `person_name`,`time_time`
FROM `person`,`times`
WHERE (`person_id`=`time_person_id` AND `time_time`>0 AND `time_time`<5)
GROUP BY `person_name`