Я делаю вопрос, используя подзапрос (без JOIN) и обычный (используя JOIN) запрос, но в конце результаты отличаются от этих двух запросов, я не могу понять эту проблему.
Вопрос заключается в том, чтобы указать данные о владельце собаки, который забронировал на этой платформе как минимум дважды
PET_OWNER(Owner_id,Oname,OAdd),
PET(Pet_id,Pname,PType),
BOOKING(Booking_num,Pet_id)
у каждого владельца может быть> = 1 собака, у каждой собаки> = 1 бронирование
SELECT PET_OWNER.Owner_id,Oname,OAdd,COUNT(*) AS BOOKING
FROM PET_OWNER,
PET,
BOOKING
WHERE PET_OWNER.Owner_id = PET.Owner_id
AND PET.Pet_id = BOOKING.Pet_id
AND PType = 'DOG'
GROUP BY PET_OWNER.Owner_id, Oname, OAdd
HAVING COUNT(*) >=2
ORDER BY PET_OWNER.Owner_id;`
это обычный запрос, показывающий, какой владелец собаки забронировал как минимум дважды
SELECT *
FROM PET_OWNER
WHERE Owner_id IN ( SELECT Owner_id FROM PET
WHERE Pet_id IN ( SELECT Pet_id FROM BOOKING)
AND PType = 'DOG'
GROUP BY Owner_id
HAVING COUNT(*) >1);
проблема в этом подзапросе заключается в том, что в результате показано, у какого владельца есть по крайней мере две собакино не какой владелец собаки сделал заказ по крайней мере дважды. подзапрос автоматически показывает мне отличный pet_id, так что я не могу рассчитывать на Pet_id в таблице Booking, потому что он всегда показывает только 1 ** любое соединение не допускается в этом подзапросе
какие изменения я должен внести вкод подзапроса? я ожидаю, что эти два запроса имеют одинаковые результаты