2013-11-13 2 views
-5

Я не очень хорошо знаком с SQL. Я использую оракул.Oracle: множественные объединения с группой по

Вот пример таблицы:

----------------------- 
Table A: 
A_ID, A_NAME, A_Address 
----------------------- 
Table B: 
A_ID, B_Name,  
----------------------- 
Table C: 
B_Name, C_Title 
----------------------- 

Вывод должен быть A_ID, A_Name, A_Address, граф (C_Title),

каждый B_name соответствует C_Title (в основном поиска)

+0

Вы хотите количество строк в b или сумму b_quantity? Вероятно, вы должны добавить некоторые примеры данных и показать некоторые попытки, которые вы сделали с ошибкой. –

+0

только что отредактировал необходимость .. возможно, что делает вещь более ясной. Мне просто нужно количество строк в A соединить с B на A_ID, а затем искать B_Name из C wsing B_Name – user2988422

ответ

0
SELECT * FROM A; 

A_ID A_NAME  A_ADDRESS 
---------- ---------- ---------- 
    1 RAM  MO 
    2 SITA  MI 
    3 JANAKI  IL 


SELECT * FROM B; 

A_ID B_NAME 
---------- ---------- 
    1 PAUL 
    1 KAPIL 
    2 DAVE 

SELECT * FROM C; 

B_NAME  C_TITLE 
---------- ---------- 
KAPIL  HONDA 
KAPIL  MAZDA 
KAPIL  ODYSSY 
DAVE  BENZE 
DAVE  LIMOUSINE 

SELECT a.A_ID, a.A_Name, a.A_Address, b.B_Name, Count(C_Title) 
FROM A a 
INNER JOIN B b ON(a.A_ID = b.A_ID) 
INNER JOIN C c ON(b.B_Name=c.B_Name) 
GROUP BY a.A_ID, a.A_Name, a.A_Address, b.B_Name; 



A_ID A_NAME  A_ADDRESS B_NAME  COUNT(C_TITLE) 
---------- ---------- ---------- ---------- -------------- 
    2 SITA  MI   DAVE     2 
    1 RAM  MO   KAPIL     3 

Здесь я считаю, что B_Name в таблице C имеет значения репутации (так как это внешний ключ), а A_ID в A, B_Name в B являются первичными ключами.

0
SELECT A_ID, A_Name, A_Address, Count(C_Title) 
FROM TableA a 
INNER JOIN TableB b ON a.A_ID = b.A_ID 
INNER JOIN TableC c ON b.B_Name = c.B_Name 
GROUP BY A_ID, A_Name, A_Address 
Смежные вопросы