Не выводить повторяющиеся значения [MySQL]

131
08 ноября 2021, 13:10

В базе данных есть 5 строк, с полем description(описание). В каждой из строк в поле description есть хэштег "#istanbul".

В 1-ой строчке - "#istanbul",
Во 2-ой строчке - "#IstanbulNight",
В 3-ей строчке - "#Istanbul",
В 4-ой строчке - "Hello and #WelcomeToIstanbul",
В 5-ой строчке - "My first travel to #Istanbul",

Мне необходимо вывести все строки, у которых в поле description есть в хэштегэ слово "istanbul". Одинаковые значение не должны повторяться, например:

Должны выводиться только 1, 2, 4 строка, так как 3 и 5 идентичны 1-ой не учитывая регистр. Необходимо убрать только те сроки, в которых один единственный хэштег "#istanbul"

Мой код:

$GetQUERY = "#istanbul";
SELECT * FROM `".PREFIX."_photos` WHERE description LIKE'%{$GetQUERY}%' ORDER by `uploaded_date` ASC

Хотел использовать SELECT DISTINCT. Не помогает. Подскажите как решить данную проблему

P.S. я новичок, строго не судить

Answer 1

Вот так отберутся строки, в которых есть тег, отсутствующий в предыдущих

$arr =  [
  "#istanbul",
  "#IstanbulNight",
  "#Istanbul",
  "Hello and #WelcomeToIstanbul. You are in #istanbul now",
  "My first travel to #Istanbul",];
// сюда собираем все найденные теги
$prev = [];
$r = [];
foreach($arr as $x) {
    if(preg_match_all('~#\w+~', $x, $match)) {
        // если надо не зависеть от регистра 
        $match[0] = array_map('strtolower', $match[0]);
        // если все уже были, пойдем дальше
        if( ! ($d = array_diff($match[0], $prev))) {
            continue;
        }
        // добавим новые, обнаруженные в строке 
        array_push($prev, ...$d); 
    }
    $r[] = $x;
}
print_r($r); // [ '#istanbul', '#IstanbulNight', 'Hello and #WelcomeToIstanbul. You are in #istanbul now']
Answer 2
$query = "SELECT * FROM `".PREFIX."_photos` WHERE description LIKE'%{$GetQUERY}%' ORDER by `uploaded_date` ASC";
$result = $conn1->query($query);
while($row = mysqli_fetch_assoc($result))
{
$data[]=$row;
}    
$data=array("0"=>"#IstanbulNight",
    "1"=>"#Istanbul",
    "2"=>"Hello and #WelcomeToIstanbul",
    "3"=>"My first travel to #Istanbul",
    "4"=>"My first travel to #Istanbul, and #GotoIstanbul",
    "5"=>"#Istanbul");
    foreach ($data as $key => $value) {
        # code...
    $pos=strpos($value,"#Ist");
    if($pos===false){
    $big[]=$value;
    }else{
    $nig[]=$value;
    }
    }
    print_r($nig);
    $result = array_unique($nig); 
    print_r($result);
READ ALSO
Добавление файла PDF в Admin panel

Добавление файла PDF в Admin panel

Как правильно организовать добавление файла PDF в админ панели сайта? Где лучше хранить эти данные — в БД или папке ресурса?

182
Превращение строки в число php [дубликат]

Превращение строки в число php [дубликат]

Возможно ли в php подобную строку "125/10" превратить в 125 без использования функции, explode?

161
Что-то не получается с циклом foreach в теге html

Что-то не получается с циклом foreach в теге html

Вроде все правильно но все равно вылазит ошибка

80
Как перезапустить thread group в JMeter?

Как перезапустить thread group в JMeter?

Мне необходимо отправить 500 запросов с round-up = 300 n-ое количество раз, при этом после завершения round-up необходимо выставить задержку в 1 минутуВозможно...

191