Я искал в течение 3-х дней для решения этого попытались десятки запросов и никто не работал до сих пор ... :(Присоединяйтесь 2 таблицы MySQL с различной информацией в одном запросе
У меня есть таблица users
и я я список пользователей, что там есть Колум user_type = 2
до сих пор так хорошо ...
Тогда у меня есть таблица feedback
, и я хочу поставить в одном запросе список пользователей и среднюю обратную связь, что каждый из тех, пользователи (зная, что некоторые пользователи не имеют обратной связи и, следовательно, даже не перечислены в feedbac k таблица).
Единственный вопрос, который вернулся что-то до сих пор был один:
SELECT DISTINCT u.user_id, u.company_name, u.post_code, u.about_company, avg(fd.rating) AS rating FROM users u LEFT JOIN feedback fd ON fd.vendor_id = u.user_id WHERE u.user_type=2 ORDER BY u.user_id ASC
Теперь на столе «обратной связи» есть только одна компания с обратной связью на данный момент. Но в этом листинге должны быть возвращены ВСЕ пользователи с столбцом user_type = 2, который составляет около 20 или около того. Проблема в том, что результатом является только одна компания (первый из списка, когда я перечисляю только компании), но это даже не компания, которая имеет обратную связь, поэтому столбец «рейтинг» затем присваивается неправильной компании.
SOOO ... после всего этого беспорядка, я надеюсь, что кто-то поймет, что я ищу и могу мне помочь. :)
EDIT1
Моя users
таблица имеет следующие поля: user_id, COMPANY_NAME, post_code, about_company
Моя feedback
таблица имеет следующие поля: feedback_id, job_id, VENDOR_ID (такие же, как user_id на пользователей таблицы), рейтинг
EDIT2
Хорошо, я пытался сохранить это просто! Мои таблицы имеют LOT больше полей, чем эти, и мой запрос на самом деле намного более сложный, поскольку он вычисляет расстояние с учетом широты и долготы. Вот РЕАЛЬНЫЙ запрос:
SELECT DISTINCT u.user_id, u.company_name, u.post_code, u.about_company, coalesce(avg(fd.rating),0) AS rating FROM users u LEFT OUTER JOIN feedback fd ON fd.vendor_id = u.user_id WHERE u.lat!='' AND u.longt!='' AND u.status!=0 AND u.user_type=2 AND SQRT(POW(69.1 * (u.lat - 38.7376772) , 2) + POW(69.1 * (-9.1269717 - u.longt) * COS(u.lat/57.3) , 2)) < 100 ORDER BY u.user_id ASC
Прежде всего, я благодарю вас так много для быстрого ответа, но, к сожалению, ваш запрос не работает для меня. :( – Pedro
Можете ли вы опубликовать свои заявления о создании таблицы? – jbrahy
Там было несколько полуколонок, которых не должно было быть. Попробуйте еще раз. – jbrahy