0 امتیاز
قبل در برنامه نویسی توسط (0 امتیاز)
ویرایش شده قبل توسط

جدولی با نام advertisements دارم با ستون و رکوردهای زیر


id         sitecatid      locationid
1             12            3
2             12            6
3             12            8
4             12            8 
5             12            8 
6             10            18 
7             13            20
8             14            21

میخوام نتیجه زیر را دریافت کنم 

sitecatid      locationid
    12            3
    10            6
    13            8
    14            18
                  20
                  21

از کوئری زیر استفاده کردم ولی نتیجه ایی که میخواستم نشد

SELECT DISTINCT sitecatid, locationid 
    FROM advertisements 
    WHERE MATCH (sitetitle,sitedescription) 
AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' 

این طوری کوئری گرفتم درست کار میکنه و نتیجه دلخواهم رو میده ولی میخواستم از یه کوئری برا هر دو استفاده کنم:

$get = "SELECT *,sitecatid, COUNT(*) as count  FROM advertisements WHERE MATCH (sitetitle,sitedescription) AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' $where GROUP BY sitecatid ORDER BY count DESC";
    $query = $mysqli->query($get);
    while($row = $query->fetch_array()) {
    $cats[] = $row;
    }
    $smarty->assign('cats',$cats);

 $get = "SELECT *,locationid, COUNT(*) as count  FROM advertisements WHERE MATCH (sitetitle,sitedescription) AGAINST ('$q' IN BOOLEAN MODE) AND status='approved' $where GROUP BY locationid ORDER BY count DESC";
    $query = $mysqli->query($get);
    while($row = $query->fetch_array()) {
    $location[] = $row;
    }
    $smarty->assign('locations',$location);
    }
قبل توسط (1.1هزار امتیاز)
قسمت select Query تون درسته و بدرستی از DISTINCT استفاده کردین. احتمالا بخاطر قسمت where است که نتیجه دلخواهتون رو نمی بینید.
قبل توسط (0 امتیاز)
نه قسمت  where  هم مشکلی نداره وقتی فقط  برای sitecatid از  DISTINCT  استفاده میکنم  نتیجه locationid  به هم میریزه و وقتی فقط برای locationid  از DISTINCT استفاده میکنم نتیجه sitecatid درست نشون داده نمیشه اگه از دو کوئری جداگانه یکی برای sitecatid و دیگری برای locationid  استفاده کنم نتیجه دلخواهم رو میگیرم فقط میخواستم از یک کوئری استفده کنم که دو بار به دیتابیس درخواست نداده باشم
قبل توسط (1.1هزار امتیاز)
شما وقتی از DISTINCT استفاده می کنید، فقط برای یک ستون اعمال نمیشه بلکه برای تمام ستون هایی که در select دارید اعمال میشه. این query جواب میده:

SELECT DISTINCT sitecatid, locationid
    FROM advertisements
قبل توسط (0 امتیاز)
نه جواب نداد

سوالات مشابه

0 امتیاز
1 پاسخ 425 بازدید
0 امتیاز
1 پاسخ 1.7هزار بازدید
0 امتیاز
0 پاسخ 210 بازدید
0 امتیاز
1 پاسخ 468 بازدید
0 امتیاز
2 پاسخ 732 بازدید
سوال شده 9 سال قبل در برنامه نویسی توسط IMANAZADI (72 امتیاز)
0 امتیاز
1 پاسخ 359 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط IMANAZADI (72 امتیاز)
...