質問: " SELECT wp_medias.*, GROUP_CONCAT(wp_media_titles.lang_id separator ',') as title_lang_ids FROM wp_medias LEFT JOIN wp_media_titles wp_media_titles ON wp_media_titles.medias_ID=wp_medias.ID WHERE wp_medias.kind_id=$kind_id GROUP BY wp_medias.ID "; ``` これが大変疑問です。 たしかに接頭辞(`wp_`)は省略しているものの、それはあくまでMySQLのエイリアス機能によるものであって、捜査対象のテーブルについては、該当のソースコードでも接頭辞(`wp_`)をつけて指定しているはずです。 なのにどうして先のようなエラーとなってしまうのでしょうか? 質問ですが、接頭辞(`wp_`)を省略してはいけないなどのルールがあるのでしたらソースを知りたいですし、もし省略してもできる方法があればそれをお尋ねできれば幸いです。 ### 補足情報 ご不要とは思いますが`CREATE`と`INSERT`のサンプルを掲載させていただきます。 ``` CREATE TABLE wp_medias (`ID` int, `kind_id` int); INSERT INTO wp_medias (`ID`, `kind_id`) VALUES (10, 9), (11, 9), (12, 9), (13, 9); CREATE TABLE wp_media_titles (`medias_ID` int, `lang_id` int, `title` varchar(3)); INSERT INTO wp_media_titles (`medias_ID`, `lang_id`, `title`) VALUES (10, 1, 'a'), (10, 2, 'エー'), (11, 1, 'b'), (12, 1, 'c'), (13, 2, 'ディー'); ```
回答: LOCK TABLES および UNLOCK TABLES 構文 多分なのですが、このページの後半あたりの制限にひっかかってるように見えます。 以下の文でページ内検索してみてください。 ``` ステートメントがエイリアスを使用してテーブルを参照する場合は、その同じエイリアスを使用してテーブルをロックする必要があります。エイリアスを指定しないでテーブルをロックすることはできません。 ``` 正直、この制限は初めて知りました 最初のLOCK TABLE時に `LOCK TABLES wp_medias as medias` とするならばそれ以降も medias というaliasをつけないと いけませんということだと思います。