Okay, here's a couple of solutions. First, if you want all the categories for a single manufacturer, you would...
SELECT category FROM table WHERE manufacturer = '<manufacturer>'
...which would give you...
<category1>
<category2>
<category3>
----------------------------------------------------
I'm assuming you want something more complete...
SELECT manufacturer, category FROM table ORDER BY manufacturer, category
...giving you...
<manufacturer1> | <category1>
<manufacturer1> | <category2>
<manufacturer1> | <category3>
<manufacturer2> | <category1>
<manufacturer2> | <category3>
...assuming <manufacturer2> is not associated with <category2>, and so on and so on and so on...
-----------------------------------------------------
This is just how recordsets are presented. It would be up to you to write the code to parse them out to how you want them presented in your web page. Setting a local variable for the current manufacturer name and then watching for it to change to a new one as you loop through the recordset would be the standard way.
It would be possible to return a two field recordset instead like so...
<manufacturer1> | 'manufacturer'
<category1> | 'category'
<category2> | 'category'
<category3> | 'category'
<manufacturer2> | 'manufacturer'
<category1> | 'category'
<category3> | 'category'
...so all you have to know is whether the first field is a 'manufacturer' or 'category', but this is generally more trouble than it's worth.
Hope this has helped.