[英]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')
類的東西過濾溫尼伯和倫敦,但我不知道它需要去哪里。
我還需要補充一點,我不能使用JOIN
或AND
運算符。
我知道這聽起來可能令人困惑,因為對我來說,解釋我的問題並不是那么簡單。 感謝您的幫助。
有一些可能性
例如
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.