Как я могу отфильтровать выделение mysql, начиная с тех же символов? - PullRequest
0 голосов
/ 11 мая 2018
$dir = Volumes/animals/big

Я выбираю значения из таблицы mySQL, начиная с определенного пути:

$sql = "SELECT path FROM files WHERE id = ? AND path LIKE '$dir%'";  
$q = $pdo->prepare($sql);
$q->execute([$id]);
$array = $q->fetchAll(PDO::FETCH_ASSOC);



array(4) {
  [0]=>
  array(1) {
    ["path"]=>
    string(149) "Volumes/animals/big/horses/shetland/amy.jpg" 
  }
  [1]=>
  array(1) {
    ["path"]=>
    string(149) "Volumes/animals/big/horses/shetland/sara.jpg" 
  }
 [2]=>
  array(1) {
    ["path"]=>
    string(149) "Volumes/animals/big/horses/shire/lord.jpg" 
  }
 [3]=>
  array(1) {
    ["path"]=>
    string(149) "Volumes/animals/big/elephant/borneo/mila.jpg" 
  }
[4]=>
  array(1) {
    ["path"]=>
    string(149) "Volumes/animals/big/map.jpg" 
  }

Мне потребуется только ОДНА запись каждого подпути.Это означает, что здесь у меня есть три записи, которые начинаются с "Тома / животные / большие / лошади".Мне нужен только один.Результат, которого я хотел бы достичь:

 array(2) {
      [0]=>
      array(1) {
        ["path"]=>
        string(149) "Volumes/animals/big/horses/shetland/amy.jpg" 
      }
     [1]=>
      array(1) {
        ["path"]=>
        string(149) "Volumes/animals/big/elephant/borneo/mila.jpg" 
      }
    [2]=>
      array(1) {
        ["path"]=>
        string(149) "Volumes/animals/big/map.jpg" 
      }

Я не знаю, как мне этого добиться.Я благодарен за любую идею.

ВАЖНО: мне нужно, чтобы этот фильтр был выбран в MYSQL напрямую.Не в php

1 Ответ

0 голосов
/ 12 мая 2018

Это можно сделать в MySQL, поскольку вы передаете верхний уровень пути в запрос. Измените ваш запрос следующим образом:

$sql = "SELECT path, 
          SUBSTRING_INDEX(SUBSTRING_INDEX(path, '$dir', -1), '/', 2) AS subpath
        FROM files 
        WHERE id = ? AND path LIKE '$dir%'
        GROUP BY subpath";

Вывод при $dir = 'Volumes/animals/big';:

path                                            subpath     
Volumes/animals/big/elephant/borneo/mila.jpg    /elephant
Volumes/animals/big/horses/shetland/amy.jpg     /horses
Volumes/animals/big/map.jpg                     /map.jpg
...