外部キーとインデックスを追加することを忘れないでください。テーブルに何百万行もあれば、パフォーマンス上の問題を避けることができます。
試してみてください。
SQL Fiddle demo
mysql> DROP TABLES IF EXISTS `product_cat_container`;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLES IF EXISTS `product_cat_pictures`;
Query OK, 0 rows affected (0.00 sec)
mysql> DROP TABLES IF EXISTS `picture_repository`;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE IF NOT EXISTS `product_cat_container` (
-> `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> `name` VARCHAR(25),
-> `order` INT UNSIGNED
->);
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE IF NOT EXISTS `product_cat_pictures` (
-> `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> `cat_id` INT UNSIGNED,
-> `picture_id` INT UNSIGNED
->);
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE IF NOT EXISTS `picture_repository` (
-> `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
-> `filename` VARCHAR(25)
->);
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO `product_cat_container`
-> (`name`, `order`)
-> VALUES
-> ('AAA', 1), ('BBB', 2), ('CCC', 3), ('DDD', 4);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql> INSERT INTO `picture_repository`
-> (`filename`)
-> VALUES
-> ('AAA'), ('BBB'), ('CCC'), ('DDD'), ('EEE');
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> INSERT INTO `product_cat_pictures`
-> (`cat_id`, `picture_id`)
-> VALUES
-> (1, 4), (1, 2), (1, 1), (2, 3), (3, 5), (3, 4);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0
mysql> SELECT
-> `c`.`id`,
-> `repo`.`filename`
-> FROM
-> `product_cat_container` `c`
-> LEFT JOIN (
-> SELECT
-> `p`.`cat_id`,
-> `p`.`picture_id`
-> FROM
-> `product_cat_pictures` `p`
-> INNER JOIN (
-> SELECT
-> MAX(`id`) `id`
-> FROM
-> `product_cat_pictures`
-> GROUP BY
-> `cat_id`
-> ) `d` ON `p`.`id` = `d`.`id`
-> ) `p` ON `c`.`id` = `p`.`cat_id`
-> LEFT JOIN `picture_repository` `repo` ON `p`.`picture_id` = `repo`.`id`
-> ORDER BY
-> `c`.`order`;
+----+----------+
| id | filename |
+----+----------+
| 1 | AAA |
| 2 | CCC |
| 3 | DDD |
| 4 | NULL |
+----+----------+
4 rows in set (0.00 sec)
チェック[GROUP BYの12.19.3 MySQLの取り扱い](http://dev.mysql.com/doc/refman/5.6/en/group-by -handling.html)。 – wchiquito