ورود

View Full Version : مشکل توی کوئری



milad7091
شنبه 21 تیر 1393, 03:22 صبح
دوستان من الان چند ساعته دارم رو اینا کار میکنم. واقعا مخم ترکید.
من 2 تا جدول دارم. به نظرتون چرا اینجور میشه. کسی میتونه کمکم کنه.

این کوئری اول من
Select
Max(news.view.view_tedad),
news.post.news_mozo,
news.post.ID
From
news.post Inner Join
news.view On news.view.news_id = news.post.ID
Where
news.post.news_mozo In (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
Group By
news.post.news_mozo, news.post.ID
که خروجیش میشه این
اویلن فیلد تعداد نمایش هر پسته دومیش که کد موضوعاته و سومیش که اعداد از 100 بیشتره مربوط به id هر خبره.

1 1 142
1 1 143
0 1 144
10 1 146 *
0 3 145
3 3 147 *
0 6 148

اونایی که ستاره زدم باید تو کوئری بعدی بیان به عنوان تنها فیلد ها به عنوان بیشتر بازدید از مطالبم که توی گروپ اومدم news.post.ID رو حذف کردم که فقط یبشتر بازدید هر گروهو نشون بده که کدش شده این:
Select
Max(news.view.view_tedad),
news.post.news_mozo,
news.post.ID
From
news.post Inner Join
news.view On news.view.news_id = news.post.ID
Where
news.post.news_mozo In (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
Group By
news.post.news_mozo

ولی این میاد id اولین خبرهای هر دسته رو به جای اونایی که با ستاره علامت زدم رو برمیگردونه.

10 1 142
3 3 145
0 6 148



به نظرتون ایراد از کجاست؟ یا چطوری باید بنویسمش.

miladamirzadeh
شنبه 21 تیر 1393, 08:15 صبح
اعضای Group By تو نتیجه ی کوئری تاثیر می ذارند. درستش اینه که از کوئری اول یک View بسازی و بعد از اون View هر کدوم از فیلدها رو مطابق نظر خودت ورداری.
مثلاً در اینجا:


SELECT * FROM MyView ORDER BY tedad DESC LIMIT 2

milad7091
شنبه 21 تیر 1393, 12:03 عصر
ممنون کوئریمو عوض کردم ولی یه مشکل دیگه.
این کوئری جدیدمه:
Select
Max(news.view.view_tedad),
news.post.ID,
news.post.news_mozo
From
news.post Inner Join
news.view On news.view.news_id = news.post.ID
Group By
news.post.ID, news.post.news_mozo
Having
Max(news.view.view_tedad) <> 0

و اینم خروجیشه:
121058
الان اگه بخوام این کوئری رو کاری کنم که قسمت های تکراری که با مشکی مشخص کردم برن چی باید بکنم. فقط قرمزا باید بمونه. اینو چیش کنم؟