次のような 2 つのテーブルがあります。
node:
NID Name
1 Chicago
2 New York
3 LA
url_alias:
src dst
user/1 user/Bob
user/2 user/Mike
node/1 node/chicago
node/2 node/new-york
node/3 node/LA
等
基本的に、url_alias テーブルには、Web サーバーがリダイレクトするエイリアス URL があります。URL に示されているように、ノードとユーザーの両方に「ID」があります。ノード テーブルを url_alias テーブルに結合し、「/」(ノード ID) の後のものと一致させようとしています。これまでのところ、このコードはありますが、部分文字列のみを使用しており、好きではないため、正しい番号で終わるユーザーにも一致します。
select `node`.`nid` AS `nid`,`node`.`name` AS `name`,`url_alias`.`src` AS `srcurl`,`url_alias`.`dst` AS `dsturl`
from ((`node` join `url_alias` on ((`node`.`nid` = substring(`url_alias`.`src`,6)))))
order by `node`.`nid` desc
(実際には、クエリは別のテーブルに結合するため、少し長くなりますが、これは機能していますが、簡単にするために編集しました)
このクエリは、次のような結果を返します。
nid name srcurl dsturl
1 chicago node/1 node/chicago
1 chicago user/1 user/Bob
2 new-york node/1 node/new-york
2 new-york user/1 user/Mike
クエリ内で「LIKE 'node/%'」を使用する方法、または部分文字列が一致する前に「ノード」のみを取得する方法はありますか?