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

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 هفته قبل در تالار کامپیوتر و اینترنت توسط babavand (0 امتیاز) 0% درصد پذیرش
ویرایش 1 هفته قبل توسط Saeed Zarinfam
قسمت select Query تون درسته و بدرستی از DISTINCT استفاده کردین. احتمالا بخاطر قسمت where است که نتیجه دلخواهتون رو نمی بینید.
نه قسمت  where  هم مشکلی نداره وقتی فقط  برای sitecatid از  DISTINCT  استفاده میکنم  نتیجه locationid  به هم میریزه و وقتی فقط برای locationid  از DISTINCT استفاده میکنم نتیجه sitecatid درست نشون داده نمیشه اگه از دو کوئری جداگانه یکی برای sitecatid و دیگری برای locationid  استفاده کنم نتیجه دلخواهم رو میگیرم فقط میخواستم از یک کوئری استفده کنم که دو بار به دیتابیس درخواست نداده باشم
شما وقتی از DISTINCT استفاده می کنید، فقط برای یک ستون اعمال نمیشه بلکه برای تمام ستون هایی که در select دارید اعمال میشه. این query جواب میده:

SELECT DISTINCT sitecatid, locationid
    FROM advertisements
نه جواب نداد

سوال های مشابه

0 رأی
1 جواب 204 بازدید
0 رأی
1 جواب 95 بازدید
0 رأی
2 جواب 110 بازدید
سوال 3 سال قبل در تالار کامپیوتر و اینترنت توسط IMANAZADI (67 امتیاز)
0 رأی
1 جواب 56 بازدید
...