I have two tables, one called customer and one called customer_attributes.
The idea is that the customer table holds core customer data, an
The reason rows are only returned is because of the tests in the WHERE clause. Any rows that do not have the correct key1 are ignored altogether - negating your LEFT JOIN.
You could move the key1 tests to your JOIN conditions
SELECT `customer`.*, `ca1`.`value1` AS `wedding_date`, `ca2`.`value1` AS `test`
FROM `customer`
LEFT JOIN `customer_attributes` AS `ca1` ON customer.customerID = ca1.customerID AND ca1.key1 = 'wedding_date'
LEFT JOIN `customer_attributes` AS `ca2` ON customer.customerID = ca2.customerID AND ca2.key1 = 'test'
WHERE (customer.customerID = '58029')