2014-09-10 4 views
0

Я получаю следующее сообщение об ошибке:Справедливо ли использовать DISTINCT два раза в одном запросе

MYSQL ОШИБКА

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT R. roomtype as roomtype , I1. meal_plan as mealplan , I1.`bed_t' at line 3

Мой код

SELECT 
    DISTINCT H.`hotelname` as `hotelname` , 
    DISTINCT R.`roomtype` as `roomtype` , 
    I1.`meal_plan` as `mealplan` , 
    I1.`bed_type` as `bedtype` , 
    I1.`roomrate` as `roomrate` , 
    I1.`pax` as `pax` , 
    I1.`childrate` as `childrate` , 
    I1.`childrate1` as `childrate1` , 
    I1.`childrate2` as `childrate2` , 
    I1.`childrate3` as `childrate3` , 
    P.`profitmarkup_type` as `profit_type` , 
    P.`applyprofit_val_room` as `applyprofit_val_room` , 
    P.`applyprofit_val_bed` as `applyprofit_val_bed` 
FROM `hoteldetails` H 
INNER JOIN `roomdetails` R 
    on H.`hotelname` = R.`hotelname` 
INNER JOIN `inventorypolicy` I1 
    on I1.`hotel_name` = H.`hotelname` 
    AND I1.`room_plan` = R.`roomtype` 
    AND I1.`bed_type`=R.`bedtype` 
    AND I1.`meal_plan`=R.`mealplan` 
    AND I1.`suppliername`=H.`supplier` 
INNER JOIN `profitmarkup` P 
    on P.`hotel_name` = H.`hotelname` 
    AND P.`suppliername` = H.`supplier` 
WHERE H.`active`='1' 
    AND H.`country`='MAL' 
    AND H.`city`='KL' 
    AND H.`show2web`='1' 
    AND H.`expiry_date` >= 11/09/2014 
    AND I1.`inventory_status`='1' 
    AND P.`markup_status` = '1' 
    AND 20140911 BETWEEN ((I1.`date1`)+(I1.`month1`*100)+(I1.`year1`*10000)) AND ((I1.`date2`)+(I1.`month2`*100)+(I1.`year2`*10000)) 
    AND 20140911 BETWEEN ((P.`date1`)+(P.`month1`*100)+(P.`year1`*10000)) AND ((P.`date2`)+(P.`month2`*100)+(P.`year2`*10000)) 

Я не знаю, как это исправить. Любая помощь приветствуется.

+0

Что вы пытаетесь достичь с помощью нескольких 'DISTINCT's? –

+0

Я хочу фильтровать дубликаты для названия отеля и типа номера –

+0

. Вы можете видеть, что im использует INNER JOIN, что приводит к повторным значениям, возможно дублируемым значениям, чтобы избежать этого, im используя ** Distinct ** –

ответ

0

Как вы можете узнать из документации инструкции MySQL SELECT, DISTINCT может быть помещен перед любым выбранным полем или выражением. Это автоматически заставляет один экземпляр его в запросе.

И где-то по дороге есть предложение, которое говорит все:

DISTINCTROW is a synonym for DISTINCT .

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