2017-12-11 34 views
0

他の列の中に、ファイル名に拡張子の付いた列があるテーブルがあります。異なる拡張子を持つ重複するファイル名のMySQL検索

ファイル名は同じだが拡張子の異なるテーブルに挿入されたすべてのファイル名を見つける必要があります。例えば、私は

のようなファイルを探しています
01_ceremony_10021.flv 
01_ceremony_10021.mp4 

私はmp4とflvの両方の形式で存在するファイルのリストが必要です。

私のようないくつかのことを試してみた:

SELECT 
    archivo, 
    substr(archivo,1, locate(".flv", archivo)-1) as NomSinExt 
FROM videoscampus 
where (substr(archivo, -4) = '.flv' || substr(archivo, -4) = '.mp4') 
order by archivo asc 

しかし、それはちょうどかかわらず、私のビデオの全体のリストを与えます。次のように

テーブルの構造は次のとおりです。

Column  Type 
----------------------------- 
id   int(11) Auto Incr  
filename varchar(250)  
deleted  int(1) 
dateStart datetime  
dateEnd  datetime  

そして、私は検出するのに必要なファイル名のいくつかの例:あなたの時間と助けを事前に

agai_cpal_t6_cristinacoca.mp4  
agai_cpal_t7_ent_ricardomartino_pacoarango.mp4 
agai_cpal_t8_alejandrogonzalez.mp4 
agai_cpal_t9_ent_ricardomartino_barbaradefranceschi.mp4 
AHE_INF_MMijanco_T3_Macronutrientes.flv <---- DUPLICATE I'm looking for 
AHE_INF_MMijanco_T3_Macronutrientes.mp4 <---- DUPLICATE I'm looking for 
ahe_inf_prim_t10_maitemijancos.mp4 
ahe_inf_t1_maitemijancos.mp4  
ahe_inf_t10_maitemijancos.mp4  
ahe_inf_t10.1_maitemijancos.mp4 
ahe_inf_t10.2_maitemijancos.mp4 
ahe_inf_t11_maitemijancos.mp4  
ahe_inf_t12_javiertejedor.mp4 

感謝。

-Orallo

+1

**自分でコードを書き込もうとします**。 [もっと研究をした後](https://meta.stackoverflow.com/q/261592/1011527) 問題がある場合は**投稿した内容を投稿してください** working **と は、[最小、完全、および検証可能な例]を提供します(http://stackoverflow.com/help/mcve)。 [よくある質問のしくみ](http://stackoverflow.com/help/how-to-ask)をお読みください。 [ツアーに参加する](http://stackoverflow.com/tour)と[this](https://meta.stackoverflow.com/q/347937/1011527)を必ずお読みください。 –

+0

少なくとも、動作しなかったクエリを表示してください。キーの列名などを推測する必要がないので、テーブルスキーマを表示することも役に立ちます。 –

+0

申し訳ありませんが、私はまったくSOに何かを載せていませんでした。私は慣習/礼儀に精通していません。私はもちろん自分でそれを理解し、ここに投稿する前にかなりのグーグルをやってみました。質問を正しく投稿する方法についてのヒントをありがとう。ありがとう! – orallo

答えて

1

これを試してください。テーブルをmp4とflvの行に分割し、各ファイル名の最初の部分の一致を比較します。

SELECT 
    SUBSTR(a.`filename`,1,LOCATE('.flv')) as `base_name`, 
    a.`filename` as `flv_file`, 
    b.`filename` as `mp4_file` 
FROM `videoscampus` a 
JOIN `videoscampus` b 
ON b.`filename` LIKE '%.mp4' 
    AND SUBSTR(b.`filename`,1,LOCATE('.mp4')) = SUBSTR(a.`filename`,1,LOCATE('.flv')) 
WHERE a.`filename` LIKE '%.flv' 
    AND a.`deleted` = 0 
    AND b.`deleted` = 0 
+0

こんにちはSloan!あなたの応答のおかげで、あなたのソリューションはほぼ完璧でした。クエリはLOCATEが1つではなく2つのパラメータを取ることに不満を募ったので、LOCATEとvoilaの各呼び出しでファイル名を2番目のパラメータとして追加しました。すべてが魅力的に機能しました。再度、感謝します。 – orallo

+0

それはうまくいって、タイプミスのために残念です!乾杯! –

関連する問題