簡體   English   中英

MySQL 中的子查詢

[英]Subqueries in MySQL

我在這里的第一篇文章,我很絕望。 需要這個來完成我作業的最后 2 個問題。

SELECT "Employee"        AS PersonType,
       EmployeeFirstName AS FirstName,
       EmployeeLastName  AS LastName,
       CityName
  FROM employee, cities
 WHERE CityName IN (SELECT CityName WHERE employee.CityID = cities.CityID)
UNION
SELECT "Guest"        AS PersonType,
       GuestFirstName AS FirstName,
       GuestLastName  AS LastName,
       CityName
  FROM guest, cities
 WHERE CityName IN (SELECT CityName WHERE guest.CityID = cities.CityID);

這是我寫的代碼,它輸出的幾乎是我需要的。 作業中的問題想要顯示來自溫尼伯或倫敦的員工或客人。 我的代碼為我提供了每位員工和客人的所有城市。 我知道我需要用WHERE CityName IN ('London','Winnipeg')類的東西過濾溫尼伯和倫敦,但我不知道它需要去哪里。

我還需要補充一點,我不能使用JOINAND運算符。

我知道這聽起來可能令人困惑,因為對我來說,解釋我的問題並不是那么簡單。 感謝您的幫助。

有一些可能性

例如

SELECT 
    "Employee" AS PersonType
    , e.EmployeeFirstName AS FirstName 
    , e.EmployeeLastName AS LastName
    , c.CityName 
FROM employee e INNER JOIN  cities c ON  e.CityID = c.CityID
WHERE c.CityName IN ('London','Winnipeg') 
UNION 
SELECT 
    "Guest" AS PersonType
    , g.GuestFirstName AS FirstName 
    , g.GuestLastName AS LastName
    , c.CityName 
    FROM guest g INNER JOIN  cities c ON g.CityID = c.CityID
    WHERE g.CityName IN ('London','Winnipeg');

或者

SELECT * FROM    
 (SELECT 
    "Employee" AS PersonType
    , e.EmployeeFirstName AS FirstName 
    , e.EmployeeLastName AS LastName
    , c.CityName 
FROM employee e INNER JOIN  cities c ON  e.CityID = c.CityID

UNION 
SELECT 
    "Guest" AS PersonType
    , g.GuestFirstName AS FirstName 
    , g.GuestLastName AS LastName
    , c.CityName 
    FROM guest g INNER JOIN  cities c ON g.CityID = c.CityID) t1
WHERE CityName IN ('London','Winnipe

g');

我還需要補充一點,我不能使用 JOIN 或 AND 運算符。

逗號分隔表是 CROSS JOIN 的另一種表示法,所以這是一個非常愚蠢的請求

SELECT * FROM    
 (SELECT 
    "Employee" AS PersonType
    , e.EmployeeFirstName AS FirstName 
    , e.EmployeeLastName AS LastName
    , c.CityName 
FROM employee e,  cities c 
where  e.CityID = c.CityID

UNION 
SELECT 
    "Guest" AS PersonType
    , g.GuestFirstName AS FirstName 
    , g.GuestLastName AS LastName
    , c.CityName 
    FROM guest g ,cities c WHERE g.CityID = c.CityID) t1
WHERE CityName IN ('London','Winnipeg');

暫無
暫無

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

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