Думаю надо с join'ами пытаться. Не близко знаком с ними, пробовал так
Код:
select c.name, k.type, k.value
from cars c
left join kit k on (k.type = 'disk' and k.value is not null) and
(k.type = 'turbo' and k.value is null)
where c.id = k.car_id
Выборка должна вывести название машин, у которых в комплектации указаны диски, но нет турбины.
То есть нужно выбрать все машины из cars, и по айдишнику смотреть, чтобы в таблице kit была запись где cars.id = kit.car_id и type='disk', а запись где type='turbo' отсутствует или если type=turbo есть, то value должен быть null
Красавец! ты крут! Только если бы я мог сделать сам, наверно не пришел бы сюда за помощью.
Если имеется ввиду это:
Код:
SELECT car_id, c.name, GROUP_CONCAT(type) as x, k1.value
FROM kit k1
join cars c on k1.car_id = c.id
GROUP BY car_id
HAVING FIND_IN_SET('disk', x) != 0 AND FIND_IN_SET('turbo', x) = 0
Неверная, ок. Исходя из твоего условия там должна быть машина номер 1, с использованием изначальных данных. У нее есть описание дисков и нет турбины. Так? Где именно неправильная выборка?
Прошу прощения. все норм сработало. Спасибо!
Только я сделал немного иначе, без join
Код:
select car_id, c.name, GROUP_CONCAT(type) as x, k1.value
from kit k1, cars c
where k1.car_id = c.id
GROUP BY car_id
HAVING FIND_IN_SET('disk', x) != 0 AND FIND_IN_SET('turbo', x) = 0