2013-06-12 2 views
0

У меня есть три таблицы. Оценки, Оценки и клиенты.Поле счетчика, объединяет, несколько выбирает

Вот некоторые SQL

SELECT estimates.id, 
estimates.estimate_number, 
estimates.description, 
estimates.meeting_date, 
estimates.job_date, 
estimates.status, 
estimates.price 

FROM 
(estimates) 
LEFT OUTER JOIN estimate_versions estimate_versions ON estimate_versions.estimate_id =  estimates.id 
LEFT OUTER JOIN customers customers ON customers.id = estimates.customer_id 
WHERE customers.key = 'JsB4ND90bn' 

Это работает - То, что я хочу сделать, это добавить поле в самом конце стола. По сути, я хочу, чтобы «количество», количество записей в estimate_versions, которые содержат текущие строки, estimate.id, вот некоторые неработающие псевдокод, что я в принципе хочу в конечном поле

count(where estimate_versions.estimate_id = estimates.id) 

Когда я пытаюсь сделать несколько разных способов достижения этого, я обычно получаю ОДИН ряд данных с одним номером в нем. Вместо того, чтобы говорить, 3 записи и поле count, содержащее соответствующее число.

Ожидая получения необходимой помощи, мои умения SQL слабы.

+0

FYI: база данных называется MySQL, не Mysqli –

+1

Ваш ИНЕКЕ эффективно делает ваш OUTER JOIN на столе клиентов как INNER JOIN. Итак, если это то, что вы хотите, тогда вы можете написать его как ИНТЕРНЕТ-ПРИСОЕДИНЬСЯ, чтобы начать! – Strawberry

ответ

2

Я думаю, что это то, что вы ищете.

SELECT estimates.id, 
estimates.estimate_number, 
estimates.description, 
estimates.meeting_date, 
estimates.job_date, 
estimates.status, 
estimates.price, 
count(estimate_versions.estimate_id) 
FROM 
(estimates) 
LEFT OUTER JOIN estimate_versions estimate_versions ON estimates.id = estimate_versions.estimate_id 
LEFT OUTER JOIN customers customers ON estimates.customer_id = customers.id 
WHERE customers.key = 'JsB4ND90bn' 
group by 
estimates.id, 
estimates.estimate_number, 
estimates.description, 
estimates.meeting_date, 
estimates.job_date, 
estimates.status, 
estimates.price 
+0

Вы спасатель жизни, спасибо, у меня была первая часть раньше, но я не включил группу, спасибо! Примите как ответ, как только будет достигнут срок. –

+1

Кстати, я также перевернул порядок ваших LEFT OUTER JOINs. Я предполагаю, что ваше намерение состояло в том, чтобы получить все записи из ESTIMATES, даже если у них нет соответствующих записей в ESTIMATE_VERSIONS или CUSTOMERS. Но в вашем первоначальном посте вы сделали их похожими на RIGHT OUTER JOINS вместо LEFT. –

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