2016-07-31 3 views
0

Я застрял в проблеме, и я надеюсь, что вы, ребята, можете помочь.застрял; SQL case statement with aggregate function

Я бегу MySql с XAMPP и PHP Мой Администратор (PMA)

У меня есть две таблицы:

Таблица A

A   |B 
1000000001 |100000001 
1000000001 |100000002 
1000000001 |100000003 
1000000002 |100000004 
1000000002 |100000005 
1000000003 |100000006 

Таблица B

C   |D 
1000000001|100000000000001 
1000000002|100000000000002 
1000000003|100000000000003 
1000000004|100000000000004 
1000000005|100000000000005 
1000000006|100000000000006 

У меня есть присоединились к двум таблицам, чтобы представить следующее:

A  |B/C  |D 
100000001|1000000001|100000000000001 
100000001|1000000002|100000000000002 
100000001|1000000003|100000000000003 
100000002|1000000004|100000000000004 
100000002|1000000005|100000000000005 
100000003|1000000006|100000000000006 

Обратите внимание на шаблон, который встречается в первых трех точках данных.

По сути мне нужна помощь, чтобы понять, как написать случай скрипт, который будет возвращать уникальный значение и граф значения D на значение

Возвращение будет:

A  |D_COUNT 
100000001|3 
100000001|2 
100000003|1 

Спасибо !

+2

Вы не можете сделать это с помощью 'CASE'. Вы делаете это с помощью ['GROUP BY'] (http://www.tutorialspoint.com/sql/sql-group-by.htm). – Andreas

+1

Этого не очень сложно достичь. Что вы пробовали? – sstan

+0

Я предполагаю, что у меня большая проблема с синтаксисом? снова PHPMyAdmin. Или мне даже нужно заявление о делах? –

ответ

1
SELECT A, 
     COUNT(DISTINCT D) AS count_d 
FROM table_c 
GROUP BY A; 
0

Попробуйте этот запрос:

select A,count(A) as D_Count from tablename group by A 
1

В таблицах вы даете, кажется, немного ошибкой, длина TableA.B 9 TableB.C 10, игнорировать это, вам может написать строку запроса, как это:

select A,count(A) as D_COUNT 
from t_a,t_b 
where t_a.b=t_b.c 
group by t_a.A; 

TableA ==> t_a

TableB ==> t_b