2015-08-25 6 views
1

Я пытаюсь искать только имя файла из полного пути, используя эти запросы.SQL substring Issue (где substring (...) = (select ....))

SELECT 
     `file_name` FROM `tbl_files` where SUBSTR(`file_path`, 
     LOCATE('/',`file_path`)+1, 
      (CHAR_LENGTH(`file_path`) - LOCATE('/',REVERSE(`file_path`)) - LOCATE('/',`file_path`))) = 
      (Select `source_path` from `tbl_transcode_folder` where `trancode_folder_id` = 1) 

Но это не возвращает мне ничего. Когда я заменяю (Select source_path from tbl_transcode_folder where trancode_folder_id = 1) на результат mnt/hd/1, как и запросы ниже, это ответ хочет, но я не хочу этого делать.

SELECT 
      `file_name` FROM `tbl_files` where SUBSTR(`file_path`, 
      LOCATE('/',`file_path`)+1, 
       (CHAR_LENGTH(`file_path`) - LOCATE('/',REVERSE(`file_path`)) - LOCATE('/',`file_path`))) = `mnt/hd/1` 
+0

Какое общее поле между этими двумя таблицами ??? Есть только одна строка в 'tbl_transcode_folder, где trancode_folder_id = 1' ??? –

+0

между ними нет общих полей, другая таблица хранит полный путь, а другая таблица хранит имя dirname, возможно ли это даже без обычных полей.? TIA – Amboom

+0

Как возможно, что вы сохраняете полный путь файла и имя каталога в двух таблицах, и в них нет полей? как вы знаете, в какой директории есть какой путь ???? –

ответ

0

Сейчас ваш подзапрос возвращает случайную строку из таблицы, которую необходимо определить соотношение между tbl_transcode_folder таблицей, необходимо определить соотношение между внешним запросом и суб-запроса, чтобы сделать их коррелируют

SELECT `file_name` 
FROM `tbl_files` 
where SUBSTR(`file_path`, LOCATE('/',`file_path`)+1 
      ,(CHAR_LENGTH(`file_path`) - LOCATE('/',REVERSE(`file_path`)) 
      - LOCATE('/',`file_path`))) 
      =(Select `source_path` 
      from `tbl_transcode_folder` 
      where `trancode_folder_id` = 1 
      AND `tbl_files`.`CommonColumn` = `tbl_transcode_folder`.`CommonColumn`) 
+0

'Выберите имя_файла из tbl_files, где UPPER (file_path) Like (выберите source_path из tbl_transcode_folder, где trancode_folder_id = 1) и media_type = 'video'', у них нет общих полей, но верните мне то, что я хочу, но когда мне нужно изменить' LIKE' в 'SUBSTR' мне ничего не возвращает. ТИА – Amboom