Unfortunately - if you've given us everything you have... "you can't get there from here".
If you want to get...
item_name item_price first_name last_name
-----------------------------------------------
'camera' '100' 'Little' 'Timmy'
'computer' '200' 'Little' 'Timmy'
... from ...
INSERT INTO `fielddata` (`Id`, `DataSourceId`, `FieldId`, `Value`) VALUES
(1, 15, 100, 'camera'),
(2, 15, 101, '100'),
(3, 15, 100, 'computer'),
(4, 15, 101, '200'),
(5, 15, 102, 'Little'),
(6, 15, 103, 'Timmy');
INSERT INTO `field` (`Id`, `FieldAttributeId`, `FieldSetId`, `FormId`, `LookupFieldTypeId`, `Description`, `DisplayOrder`, `IsDeleted`, `Label`, `Name`) VALUES
(102, 0, 0, 1, 6, 'First Name Description', 0, 0, 'First Name Label', 'first_name'),
(103, 0, 0, 1, 6, 'Last Name Description', 0, 0, 'Last Name Label', 'last_name'),
(100, 0, 1, 1, 6, 'Item Name Description', 0, 0, 'Item Name Label', 'item_name'),
(101, 0, 1, 1, 6, 'Item Price Description', 0, 0, 'Item Price Label', 'item_price');
You'll need to be able to pull each column as a sub-select like so...
select fd.value,
from fielddata fd
inner join field f on (fd.FieldId = f.Id)
where f.name = 'item_name'
Problem is, once you get those put together, you don't have a column to "glue" the recordsets back together - eg you won't know which price goes with which name because there's not a item_id of sorts on the fielddata table.
Let us know if there's something that accidentally got left out.
Just out of curiosity - is this class work? Looks like an exercise of sorts...
Good luck!