2012-05-24 7 views
0

У меня есть три таблицы.Запрос Mysql для объединения трех таблиц

запросы - request_id, request_message, requester_id

  • запрашивающие
  • requesters_id, requesters_name
  • ответов
  • RESPONSE_ID, REQUEST_ID, response_me Ssage

Я хочу, чтобы принести все поля из запросов, requesters_name из запрашивающих, для которых requester_id находится в таблице запросов и количества ответов на REQUEST_ID из таблицы ответов.

, пожалуйста, помогите мне.

Благодаря

ответ

0
SELECT requests.*,requesters.requesters_name,count(1) AS c FROM requests 
LEFT JOIN requesters ON requesters.requester_id = request.requester_id 
LEFT JOIN responses ON responses.request_id = requests.request_id 
GROUP BY requests.request_id 
+0

LEFT JOIN медленный. Это будет по-прежнему работать с обычным JOIN – Cfreak

+0

с регулярным JOIN, если для какого-либо конкретного запроса нет ответа, он не покажет эту строку. но с левой JOIN он покажет эту строку с count = 0; –

+0

Если для каждого запроса имеется запросчик, могут использоваться 'INNER JOIN requesters'. – vearutop

0

Я бы получить счет от суб-выбора и просто соединить две другие таблицы вместе с регулярным присоединиться

SELECT r.*, rn.requesters_name, 
    (SELECT COUNT(response_id) 
     FROM responses rp WHERE r.request_id=rp.request_id) 
    AS response_count 
FROM requests r JOIN requester rn ON r.requesters_id=rn.requesters_id 
+0

во второй ответ на этот вопрос, мы может избежать подзапроса –

+0

LEFT JOIN и GROUP медленнее – Cfreak

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