2013-06-05 4 views
1

У меня есть два запроса, которые я запускаю. Первый работает, но по какой-то причине функция EXISTS(), похоже, добавляет около минуты времени загрузки, что делает ее невыносимой для использования. Поэтому я написал второй запрос, который, как мне кажется, должен дать тот же ответ, но вместо этого он дает совсем другой ответ.Два запроса MySQL, дающие разные результаты

Первый

select 
count(`FavoritesHeaderID`) `count` 
from `favoritesheader` 
join `vwactiveevent` on `vwactiveevent`.`MainEventID`=`favoritesheader`.`MainEventID` 
where `Admin`=0 
and exists(
select 1 
from `invoiceheader` 
join `vwactiveevent` on `vwactiveevent`.`MainEventID`=`invoiceheader`.`MainEventID` 
where `Phone`=`favoritesheader`.`CellPhone` 
and `OrderStatusID`=2 
); => 284 

Второй

select 
count(`FavoritesHeaderID`) `count` 
from `favoritesheader` 
join `vwactiveevent` on `vwactiveevent`.`MainEventID`=`favoritesheader`.`MainEventID` 
join `invoiceheader` on `vwactiveevent`.`MainEventID`=`invoiceheader`.`MainEventID` 
where `Admin`=0 
and `Phone`=`favoritesheader`.`CellPhone` 
and `OrderStatusID`=2; => 1578 

Я не знаю, если только это достаточно информации, чтобы уйти из, но если это то любая помощь будет много оценили.

+0

Что отличает результаты ? – Joe

+0

Неплохо, обновляю сейчас –

ответ

1

Шансы JOIN включает в себя дублированные строки в вашем COUNT. Если я понять ваш вопрос правильно, предполагая, что FavoritesHeaderID уникален, и это поле вы пытаетесь COUNT, вы можете добавить DISTINCT для каждого запроса, и они должны возвращать один и тот же счет:

select 
    count(distinct `FavoritesHeaderID`) `count` 
from `favoritesheader` 
    join `vwactiveevent` on `vwactiveevent`.`MainEventID`=`favoritesheader`.`MainEventID` 
    join `invoiceheader` on `vwactiveevent`.`MainEventID`=`invoiceheader`.`MainEventID` 
where `Admin`=0 
    and `Phone`=`favoritesheader`.`CellPhone` 
    and `OrderStatusID`=2 
+0

Вы определенно знаете свои вещи, особенно когда я впервые разместил это, мне не хватало информации в вопросе. Спасибо –

+0

@stumpx - np, рад, что я мог бы помочь! – sgeddes

Смежные вопросы