SQL: Max og Min
Hej igen!Har følgende:
SELECT GREATEST(MAX(partner_services.cpc), MAX(partner_services_filter.cpc)) AS maxcpc, LEAST(MIN(partner_services.cpc), MIN(partner_services_filter.cpc)) AS mincpc FROM partner INNER JOIN partner_services ON partner.id=partner_services.partner_id AND partner_services.type_id='".$type_id."' LEFT JOIN partner_services_filter ON partner.id=partner_services_filter.partner_id AND partner_services_filter.type_id='".$type_id."' AND ((partner_services_filter.country_id='".$country_id."' AND partner_services_filter.city='') OR (partner_services_filter.country_id='".$country_id."' AND partner_services_filter.city='".$city."')) WHERE partner.status_id='1' ORDER BY partner_services_filter.city DESC
Det den skulle gøre er at finde MAX(cpc) værdi fra partner_services og MAX(cpc) HVIS angivet i partner_services_filter, og så returnere den højeste af de to.. det samme er gældende på MIN(cpc).
Det jeg får ud er kun MAX() på partner_services men der er angivet en i partner_services_filter som er højere.
Ved godt det kan være lidt rodet at kigge på men håber i forstod hvad jeg mente!
Har også prøvet denne (som virker perfekt i andre sammenhæng) hvor det kun er det mellem SELECT og FROM jeg har skiftet ud!
SELECT GREATEST(MAX(partner_services.cpc), MAX(partner_services_filter.cpc)) AS maxcpc, LEAST(MIN(partner_services.cpc), MIN(partner_services_filter.cpc)) AS mincpc FROM partner INNER JOIN partner_services ON partner.id=partner_services.partner_id AND partner_services.type_id='".$type_id."' LEFT JOIN partner_services_filter ON partner.id=partner_services_filter.partner_id AND partner_services_filter.type_id='".$type_id."' AND ((partner_services_filter.country_id='".$country_id."' AND partner_services_filter.city='') OR (partner_services_filter.country_id='".$country_id."' AND partner_services_filter.city='".$city."')) WHERE partner.status_id='1' AND ((partner.id NOT IN (SELECT partner_filter.partner_id FROM partner_filter WHERE partner_filter.type_id='".$type_id."' AND partner_filter.country_id='".$country_id."' AND partner_filter.city='') AND partner.id NOT IN (SELECT partner_filter.partner_id FROM partner_filter WHERE partner_filter.type_id='".$type_id."' AND partner_filter.country_id='".$country_id."' AND partner_filter.city='".$city."'))) ORDER BY partner_services.cpc DESC, partner.created ASC, partner_services_filter.city DESC
Men der får jeg fejlen:
1140 (Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if there is no GROUP BY clause)
Session halted.
