簡體   English   中英

如何在 SQL 中顯示 3 個不同表中的多列?

[英]How do I display multiple columns from 3 Different tables in SQL?

我有3張桌子:

Reservation , Trip , Customer

我只需要顯示多次預訂的客戶的行程名稱、行程類型、客戶名字、客戶姓氏

有點像這樣

預訂表

Reservation_ID ... ... .. Customer_Num

  1. 16001 101
  2. 16002 101
  3. 16003 102
  4. 16004 103
  5. 16005 103

客戶表

Customer_ID ... ... .. Customer_Num

  1. 30 101
  2. 31 102
  3. 32 103

Customer 表的主 ID 是customer_ID ,列名是Customer_Num 此列名稱也在reservation表中。

預訂表的主 ID 是Reservation_ID

我試過了:

SELECT Customer.First_Name, Customer.Last_Name, Trip.Trip_Name, Trip.Type, Reservation.Customer_Num COUNT(Reservation.Customer_Num
FROM Reservation, Customer, Trip
WHERE Reservation.Customer_Num = Customer.Customer_Num
HAVING COUNT(Reservation.Customer_Num) > 1
GROUP BY Customer.First_Name, Customer.Last_Name, Trip.Trip_Name, Trip.Type, Reservation.Customer_Num;

在此處輸入圖片說明

在此處輸入圖片說明

在此處輸入圖片說明

假設在您的 TRIP 表中,您有行程名稱、行程類型等列,您可以嘗試以下查詢 -

SELECT Customer.First_Name
      ,Customer.Last_Name
      ,Trip.Trip_Name
      ,Trip.Type
      ,Reservation.Customer_Num
      ,COUNT(Reservation.Customer_Num) Customer_Num_Cnt
FROM Reservation R
INNER JOIN Customer C ON Reservation.Customer_Num = Customer.Customer_Num
INNER JOIN Trip T ON R.TRIP_ID = T.TRIP_ID
GROUP BY Customer.First_Name
        ,Customer.Last_Name
        ,Trip.Trip_Name
        ,Trip.Type
        ,Reservation.Customer_Num
-- HAVING COUNT(Reservation.Customer_Num) > 1;

如果這不能滿足您的要求,請分享 TRIP 表和 CUSTOMER 表的完整結構。

試試這個,假設 Trip 表使用 Customer_num 字段作為外鍵

select A.Customer_id, A.Name, A.Last_name, B.name, B.type from Customer as A
where Customer_id in 
    (select Customer_Num from Reservation group by Customer_Num having count(Customer_Num) > 1)
left join Trip as B on Trip.Customer_Num = Customer.Customer_Num

您可以使用EXISTS

SELECT t.*, c.*
FROM reservation r INNER JOIN
     customer c
     ON c.Customer_Num = r.Customer_Num INNER JOIN
     trip t
     ON . . .
WHERE EXISTS (SELECT 1 
              FROM reservation r1 
              WHERE r1.customer_no = r.customer_no AND 
                    r1.Reservation_ID <> r.Reservation_ID 
             );

您需要調整 Trip 表的ON子句,因為您沒有指定表信息。

這將顯示制作結果,以便我可以選擇哪些名稱具有多個保留。 在預訂表中,它列出了擁有多個預訂的客戶編號,但我不確定為什么它不起作用。

選擇 CUSTOMER.FIRST_NAME、CUSTOMER.LAST_NAME、TRIP.TRIP_NAME、TRIP.TYPE、RESERVATION.CUSTOMER_NUM、COUNT(RESERVATION.CUSTOMER_NUM) CUSTOMER_NUM_CNT

從預訂

CUSTOMER.CUSTOMER_NUM = RESERVATION.CUSTOMER_NUM 內部加入客戶 RESERVATION.TRIP_ID = TRIP.TRIP_ID 內部加入旅行

GROUP BY CUSTOMER.FIRST_NAME、CUSTOMER.LAST_NAME、TRIP.TRIP_NAME、TRIP.TYPE、RESERVATION.CUSTOMER_NUM 已注釋掉--HAVING COUNT(RESERVATION.CUSTOMER_NUM) > 1;

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM