2012-02-22 4 views
1

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

Я использовал запрос SELECT ниже, чтобы создать таблицу.

SELECT ward.ward_no, bed_no 
FROM ward, bed 
WHERE ward.ward_no = bed.ward_no 

.

ward_no  bed_no 

w1   1. 
w1   2. 
w1   3.  
w1   4.  
w2   5.  
w2   6.  
w2   7. 
w3   8.  
w3   9.  
w3   10. 
w4   11. 

То, что я пытаюсь сделать, это создать таблицу, в которой он не показывает каждую палату не есть w1 и поле, показывающее, сколько полей в нем.

например.

w1 3. 
w2 3. 
w3 3 

Я попытался COUNT & GROUP BY областей, как так ...

SELECT ward.ward_no, bed_no 
FROM ward, bed 
WHERE ward.ward_no = bed.ward_no 
AND COUNT (bed_no) AS beds_in_ward 
GROUP BY ward_no; 

, но без радости, любой совет будет в полной мере оценил

+4

Не понимаю, где ваши желаемые результаты родом из. Разве это не должно быть '(w1,4), (w2,3), (w3,3), (w4,1)' из ваших данных образца? –

+1

@ Андрю Роуз, ты просто спросил это дважды? –

+1

Возможный дубликат [Проблемы с подсчетом ряда строк в SQL и их группировка] (http://stackoverflow.com/questions/9397851/problems-with-counting-a-number-of-rows-in-sql-and -группировка-их) –

ответ

4

У вас есть ваш COUNT() в заблуждении место

SELECT ward.ward_no, COUNT (bed_no) AS beds_in_ward 
FROM ward 
INNER JOIN bed 
ON ward.ward_no = bed.ward_no 
GROUP BY ward_no; 

Я также обновил запрос на использование JOIN вместо ',' между вашими таблицами.

+2

+1 Для явного 'JOIN' –

+0

Спасибо за ответ извините за начальное сообщение, это мой первый вопрос, задающий вопрос. –

+0

@AndrewRose рад, что это сработало. – Taryn

0
SELECT 
    ward.ward_no, count(*) as no_of_beds 
FROM 
    ward, bed 
WHERE 
    ward.ward_no = bed.ward_no 
GROUP BY 
    ward_no; 
+0

Спасибо за ответ извините за начальное беспорядочное сообщение, это мой первый вопрос, задающий вопрос - Еще раз спасибо. –

0
SELECT ward.ward_no, COUNT (bed_no) AS beds_in_ward 
FROM ward, bed 
WHERE ward.ward_no = bed.ward_no 
GROUP BY ward_no; 
+0

Спасибо за ответ извините за начальное сообщение messy это мой первый раз задающий вопрос - еще раз спасибо. –

0

Попробуйте

SELECT ward.ward_no, count(bed_no) 
FROM ward, bed 
WHERE ward.ward_no = bed.ward_no 
GROUP BY ward.ward_no 
+0

Спасибо за ответ извините за начальное сообщение messy это мой первый раз задающий вопрос - Еще раз спасибо. –

0

Не совсем уверен, что вы хотите сделать здесь, но я предполагаю, что это так:

SELECT 
w.ward_no, count(bed_no) 
FROM ward w 
inner join bed b on b.ward_no = w.ward_no 
GROUP BY w.ward_no; 
+0

Спасибо за ответ извините за начальное сообщение messy это мой первый раз задающий вопрос - еще раз спасибо. –

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