У вас что "французский" SQL?
Ошибка потому, что объединение запроса не потому полю. ID размера это уникальный для размера ключ.
Таблица продуктов не может содержать в себе ссылки на таблицу размеров, таким образом указывая как размеры есть у продукта. В противном случае придется дублировать каждую запись о продукте в этой таблице, а сделать этого нельзя, так как ID продукта тоже уникальное значение.
Чтобы связать продукты с размерами, которые у них есть, нужна внешняя таблица связей между этими таблицами.
Пусть таблица продуктов, условно products
pid name etc
1 name 1 aaaaaa
2 name 2 bbbbbb
Таблица размеров, условно proportions
id size
1 19
2 20
3 21
4 22
А вот так они связываются через внешнюю таблицу, условно назовем ее relations:
pid id
1 1
1 2
1 4
2 1
2 3
И у этой таблицы pid + id, это составной уникальный ключ, который не позволит одному и тому же продукту указать два и более раза один и тот же размер. Из этой таблицы видно, что продукт 1 имеет размеры 19, 20 и 22, а продукт 2 размеры 19 и 21. Если ведется учет количества размеров на складе, то эта таблица может содержать и поле описывающее это количество для каждого из размеров у каждого из продуктов.
Чтобы получить товары и их размеры, запрос к таблице продуктов обращается к этой таблице соединяя их как
ON relations.pid = products.pid
А по полученному таким образом id размера из этой таблицы, объединяем в запрос и таблицу размеров как
ON relations.id = proportions.pid
Получаем такой запрос:
$q = mysql_query('SELECT *
FROM products
LEFT JOIN relations
USING(pid)
LEFT JOIN proportions
USING(id)
ORDER BY name, size');
Так как имена полей в таблицах по которым они связываются одни и те же что в родительских, что в таблице связей, то используется USING(). Результатом будет ресурс:
Array
(
[0] => Array
(
[id] => 1
[pid] => 1
[name] => name 1
[etc] => aaaaaa
[size] => 19
)
[1] => Array
(
[id] => 2
[pid] => 1
[name] => name 1
[etc] => aaaaaa
[size] => 20
)
[2] => Array
(
[id] => 4
[pid] => 1
[name] => name 1
[etc] => aaaaaa
[size] => 22
)
[3] => Array
(
[id] => 1
[pid] => 2
[name] => name 2
[etc] => bbbbbb
[size] => 19
)
[4] => Array
(
[id] => 3
[pid] => 2
[name] => name 2
[etc] => bbbbbb
[size] => 21
)
)
в котором проходом в цикле по ключу pid получаем описание товара и список его размеров.
Вы в своем запросе пытаетесь связать таблицы как ID товара равно ID размера, что даже по логике несуразица, и об остальном можно и не говорить уже.