SQL Присоединяйтесь влево, группируйте, чтобы получить Где идентификатор равен только конкретному - PullRequest
0 голосов
/ 16 апреля 2020

Итак, у меня есть запрос SQL, как показано ниже, который отлично работает для получения моей средней ставки и других значений, связанных с ней.

  SELECT deal_page.id,
    deal_page.merchant_id,
    deal_page.category_id,
    deal_page.emirate_id,
    deal_page.title,
    deal_page.title,
    deal_page.description,
    deal_page.emirate,
    deal_page.lat,
    deal_page.lng,
    deal_page.address,
    deal_page.thumbnail_name,
    deal_page.price,
    deal_page.created_at,
    AVG(ratings.ratings) AS ratings
FROM deal_page 
LEFT JOIN ratings ON deal_page.id = ratings.deal_id 
GROUP BY deal_page.id 
ORDER BY lat ASC

Нет, я не пытаюсь получить базу данных, чтобы получить мне список где emirate_id на deal_page равен 2. Я пробовал ниже запрос, но он дал мне ошибку:

SELECT deal_page.id,
    deal_page.merchant_id,
    deal_page.category_id,
    deal_page.emirate_id,
    deal_page.title,
    deal_page.title,
    deal_page.description,
    deal_page.emirate,
    deal_page.lat,
    deal_page.lng,
    deal_page.address,
    deal_page.thumbnail_name,
    deal_page.price,
    deal_page.created_at,
    AVG(ratings.ratings) AS ratings 
FROM deal_page 
LEFT JOIN ratings ON deal_page.id = ratings.deal_id 
GROUP BY deal_page.id 
ORDER BY lat ASC 
WHERE deal_page.emirate_id = 2;

Ошибка говорит: # 1064 - у вас есть ошибка в вашем синтаксисе SQL; обратитесь к руководству, соответствующему вашей MySQL версии сервера, чтобы узнать правильный синтаксис для использования рядом с 'WHERE deal_page.emirate_id = 2 LIMIT 0, 25' в строке 1

1 Ответ

0 голосов
/ 16 апреля 2020

Where должен go до агрегации:

SELECT . . . 
FROM deal_page dp LEFT JOIN 
     ratings r
     ON dp.id = r.deal_id 
WHERE deal_page.emirate_id = 2
GROUP BY dp.id 
ORDER BY lat ASC ;

Примечание: я использовал псевдоним таблицы, чтобы было легко писать для столбца, откуда идет, и меньше ввода (избегайте полной таблицы) имя).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...