У вас ужасный формат данных, и вы должны это исправить. Отображение кодов должно иметь отдельную строку для каждого кода.
Если все коды состоят из трех символов, то ответ Л. Скотта Джонсона достаточно близок. В противном случае вы должны принять во внимание разделитель:
SELECT c.code, count(i.codestring)
FROM codes c LEFT JOIN
items i
ON ' ' || i.codestring || ' ' LIKE '% ' || c.code || ' %'
GROUP BY c.code;
Обратите внимание на другие исправления кода:
- Оператор конкатенации является стандартным
||
.
-
count()
вернет 0
, если совпадений нет.