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 پاسخ 524 بازدید
0 امتیاز
1 پاسخ 1.8هزار بازدید
0 امتیاز
0 پاسخ 291 بازدید
0 امتیاز
1 پاسخ 589 بازدید
0 امتیاز
2 پاسخ 822 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط IMANAZADI (72 امتیاز)
0 امتیاز
1 پاسخ 547 بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط IMANAZADI (72 امتیاز)
...