2016-11-27 2 views
0

У меня есть две таблицы, созданные с кодом SQL:Oracle APEX Присоединяйтесь и графа

CREATE TABLE 
TicketSales(
    purchase# Number(10), 
    client# Integer CONSTRAINT fk1 REFERENCES Customers, 
    PRIMARY KEY(purchase#)); 

CREATE TABLE Customers(
    client# Integer, 
    name Char(30), 
    Primary Key(client#); 

В основном таблица TicketSales содержит данные о продажах билетов и клиент # является внешний ключ ссылки в таблице клиентов. Я хотел бы подсчитать имена, которые находятся в таблице TicketSales. я попытался под кодом без успеха:

select Count(name) 
From Customers 
Where Customers.Client#=TicketSales.Client# 
Group by Name; 

Любая помощь приветствуется.

Спасибо,

ответ

0

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

select c.Name, Count(*) 
From Customers c 
INNER JOIN TicketSales t ON c.Client# =t.Client# 
Group by c.Name; 

Если вы хотите только количество имен, а не билеты, а затем использовать

select Count(*) 
From Customers c 
; 

Или, для подсчета людей, которые имеют билеты recrded против них:

select Count(DISTINCT t.Client#) 
From TicketSales t 
; 
+0

Это работает как шарм, большое вам спасибо. Я не могу понять, что означает c и t, это аббревиатура от имен таблиц. Раньше я пытался использовать левое соединение, и это не сработало, есть ли разница между внутренним и левым соединением? – kkoz84

+0

Да. Большая разница между этими типами соединений. Много доступных описаний. –

+0

Попробуйте это руководство для sql-соединений. https://www.codeproject.com/articles/33052/visual-representation-of-sql-joins –