Как объединить три таблицы и получить выбранные столбцы из трех таблиц и в оракуле? - PullRequest
2 голосов
/ 10 марта 2012

у меня 3 таблицы. кинотеатр, бронирование и клиент

create table cinema
(
c_id int,
location varchar(10)
)
insert into cinema values(1,'New York');
insert into cinema values(2,'London');
insert into cinema values(3,'Paris');

create table booking
(
c_id int,
cust_id int
)

insert into booking values(1,10);
insert into booking values(2,11);
insert into booking values(3,12);
insert into booking values(3,13);
insert into booking values(2,14);

create table customer
(
cust_id int,
cust_name varchar(10)
)

insert into customer values(10,'sam');
insert into customer values(11,'adrian');
insert into customer values(12,'mark');
insert into customer values(13,'jim');
insert into customer values(14,'tom');

Я хочу выбрать идентификатор клиента (т. Е. Cust_id), имя клиента (cust_name) и местоположение (из таблицы в кинотеатре) всех клиентов, которые не бронировали в Париже.

что я хочу -

cust_id cust_name location
10      sam       New York   
11      adrian    London
14      tom       London

Я много пробовал .... один из моих кодов ---

SELECT customer.cust_id,customer.cust_name,
cinema.location as Location FROM booking,cinema,customer
WHERE booking.c_id=cinema.c_id AND location!='Paris';

это дает мне 15 результатов .. Я не могу думать, как это сделать .. пожалуйста, помогите мне с этим.

Ответы [ 6 ]

4 голосов
/ 10 марта 2012

В вашем коде вы не присоединяете booking к customer, что вызывает вашу проблему.Я использую явные соединения, а не неявные здесь.Хотя разницы нет, явный синтаксис стандартный.

select cu.cust_id, cu.cust_name, ci.location
  from cinema ci
  join booking b
    on ci.c_id = b.c_id
  join customer cu
    on b.cust_id = cu.cust_id
 where ci.location <> 'Paris'

Я не совсем уверен в структуре вашей таблицы бронированияЯ ожидал бы еще несколько столбцов, например количество билетов и т. Д.

3 голосов
/ 10 марта 2012

Ваш WHERE statement не так конкретен, как вы хотите. Вам нужно условие, соответствующее booking.cust_id to customer.cust_id:

WHERE booking.c_id = cinema.c_id 
AND booking.cust_id = customer.cust_id
AND location != 'Paris'

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

0 голосов
/ 15 октября 2015

HII вы можете использовать присоединиться так:

SQL

select customer.cust_id,customer.cust_name,cinema.location from cinema,customer,booking where cinema.c_id=booking.c_id and booking.cust_id=customer.cust_id and cinema.location not like 'paris';
0 голосов
/ 17 декабря 2013

Составное соединение, объединяющее четыре таблицы:

Используется 4 таблицы

  1. Клиенты
  2. Заказы
  3. OrderDetails
  4. Продукты

Этот пример работает на 100% Вы можете попробовать это в W3schools - Inner Join «Попробуйте сами» Таблицы редактора SQL взяты из редактора W3schools.

ЗАПРОС:

Select Customers.CustomerName as Table1_Customer, Orders.EmployeeID as Table2_Employee, OrderDetails.Quantity as Table3_OrderDetails,Products.ProductName as Table4_Products 
From Customers
INNER JOIN Orders 
ON Customers.CustomerID = Orders.CustomerID
INNER JOIN OrderDetails 
ON Orders.OrderID = OrderDetails.OrderID 
INNER JOIN Products
ON OrderDetails.ProductID = Products.ProductID Order by EmployeeID;
0 голосов
/ 21 октября 2013

MS SQL Server 2008:

select cust_id, cust_name, location
from customer c 
inner join booking b 
inner join location l
on c.cust_id = b.cust_id and b.c_id=l.c_id
0 голосов
/ 29 мая 2013

См. Приведенный ниже пример:

Select   
businessuser.UserName,
businessuser.EmailAddress,
businessimages.ImgName, 
featured_cart.FeaturedPlan,featured_cart.StartDate
From featured_cart
Inner Join businessimages on featured_cart.FeaturedProId = businessimages.IdBusinessImages 
Inner Join businessuser  on businessimages.UserId = businessuser.IdBusinessUser
and featured_cart.FeaturedType = "Featured Email"

3 таблицы:

  1. businessuser
  2. businessimages
  3. featured_cart

этот пример работает правильно ...

...