简体   繁体   English

如何联接三个表并从三个表中以及在oracle中检索选定的列?

[英]how to join three tables and retrieve selected columns from the three tables and in oracle?

I have 3 tables. 我有3张桌子。 cinema, booking and customer 电影院,订票和顾客

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');

I want to select customer id(ie; cust_id), customer name(cust_name) and location(from cinema table) of all customer who have not booked in paris. 我想选择尚未在巴黎预订的所有客户的客户ID(即cust_id),客户名称(cust_name)和位置(来自电影院表)。

what i want is -- 我想要的是-

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

I tried a lot.... one of my code is --- 我尝试了很多。。。我的代码之一是-

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';

it gives me 15 result.. I cant think how to do this.. please help me with this. 它给了我15个结果..我想不出该怎么做..请帮助我。

In your code you're not joining booking to customer , which is causing your problem. 在您的代码中,您没有加入bookingcustomer ,这导致了您的问题。 I use explicit joins as opposed to implicit here. 我在这里使用显式联接而不是隐式联接。 Though there is no difference , the explicit syntax is standard. 尽管没有区别 ,但显式语法是标准的。

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'

I'm not entirely certain about the structure of your booking table. 我不确定您的预订表的结构。 I would expect a few more columns, for instance number of tickets, etc. 我希望有更多列,例如票数等。

Your WHERE statement is not as specific as you want. 您的WHERE statement不是您想要的那么具体。 You need a condition matching booking.cust_id to customer.cust_id : 您需要一个与booking.cust_id to customer.cust_id相匹配的条件:

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

The way you are doing it now, you are geting results for all combinations of customers. 现在,您正在为所有客户组合获取结果。

See the below example : 请参阅以下示例:

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 tables are : 3张桌子是:

  1. businessuser businessuser
  2. businessimages businessimages
  3. featured_cart featured_cart

this example work properly... 这个例子工作正常...

MS SQL Server 2008: 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

Compound Join Joining Four Tables: 复合联接联接四个表:

Used 4 Tables 二手4桌

  1. Customers 顾客
  2. Orders 命令
  3. OrderDetails 订单详细信息
  4. Products 制品

This Example works 100% You can try this in W3schools - Inner Join 'Try yourself' SQL Editor tables are taken from the W3schools Editor. 本示例可以100%起作用您可以在W3schools中尝试使用此方法-内部联接“尝试一下” SQL编辑器表来自W3schools编辑器。

QUERY: 查询:

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;

hii you can use join like this: 你好,你可以这样使用join:

SQL 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';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM