עבור לתוכן

עזרה עם QUERY מסויים

Featured Replies

פורסם

היי,

מכיוון שאני לא חזק מידי פעם MYSQL אני צריך עזרה עםquery מסוים.

מה שיש לי זה טבלה שאחד השדות בה ניקרא groupId. אם יש קבוצה בערך יהיה הID של הקבוצה (בטבלה אחרת כמובן) אם אין בקבוצה הערך יהיה 0.

מה שאני רוצה לעשות זה Select לכל הטבלה, אבל שיתן לי קצת תוצאות שהGroupId שלהן הוא או 0 או distinct

שם הטבלה הוא share_log

תודה

פורסם

מה שאני רוצה לעשות זה Select לכל הטבלה, אבל שיתן לי קצת תוצאות שהGroupId שלהן הוא או 0 או distinct

מה? הניסוח הזה לא כל כך ברור. בכל מקרה אתה יכול להוסיף לטבלת הקבוצות רשומה פיקטיבית עם id=0.

פורסם

הוא רוצה לעשות שאילתת סלקט על הטבלה share_log. עכשיו הוא רוצה שזה ישלוף לו את כל השורות שיש להם שדה GroupId שהוא 0, ושורה אחת מכל GroupId שהוא שונה מ-0.

למשל אם יש 3 שורות עם GroupId שהוא 0, ו-2 עם GroupId של 1 ועוד שורה עם GroupId של 5.

אז זה יוציא לו את כל השורות עם ה-0, שורה אחת שה-GroupId הוא 1, ואת השורה עם GroupId שיש לה 5.

פורסם

אז אפשר לעשות את זה עם שתי שאילתות נפרדות (אחת ששולפת רשומות עם GroupId=0 ואחת ששולפת את שאר הרשומות, אבל distinct) ולחבר אותן עם Union.

  • 4 שבועות מאוחר יותר...
פורסם
  • מחבר

סורי, שחכתי לכתוב את התשובה:

 

// kill the temp table
$this->db->query(
"DROP TABLE IF EXISTS `{$this->session->userdata('userid')}temp`"
);

$this->db->query(
"create temporary table {$this->session->userdata('userid')}temp as select *
from share_log
where to_groupId != 0
and from_id = {$this->session->userdata('userid')}
group by round(UNIX_TIMESTAMP(time)/5), link
order by time desc
limit 3"
);

$this->db->query(
"insert into {$this->session->userdata('userid')}temp
select *
from share_log
where to_groupId = 0
and from_id = {$this->session->userdata('userid')}
order by time desc
limit 3"
);

$q = $this->db
->where('from_id', $this->session->userdata('userid'))
->where('link !=', '')
->order_by('time', 'desc')
->limit(3)
->get("{$this->session->userdata('userid')}temp");

מקווה שזה יעזור למישהו מתישהוא ותודה על העזרה

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים