嘗試使用以下LEFT JOIN
解決,但之後在同該對於每一個國家,發現已經訪問了該國
SELECT COUNTRY FROM VISIT LEFT JOIN S ON S.CRUISENUM=VISIT.CRUISENUM (SELECT SHIP.SHIPNUM , WEIGHT , CRUISENUM FROM CRUISE LEFT JOIN SHIP ON CRUISE.SHIPNUM = SHIP.SHIPNUM) AS S
嘗試使用以下LEFT JOIN
解決,但之後在同該對於每一個國家,發現已經訪問了該國
SELECT COUNTRY FROM VISIT LEFT JOIN S ON S.CRUISENUM=VISIT.CRUISENUM (SELECT SHIP.SHIPNUM , WEIGHT , CRUISENUM FROM CRUISE LEFT JOIN SHIP ON CRUISE.SHIPNUM = SHIP.SHIPNUM) AS S
你可以做兩個連接被困平均體重船舶查詢,不需要創建子查詢。
SELECT V.COUNTRY, AVG(S.WEIGHT)
FROM visit V
LEFT JOIN cruise C ON (C.CRUISENUM = V.CRUISENUM)
LEFT JOIN ship S ON (S.SHIPNUM = C.SHIPNUM)
GROUP BY V.COUNTRY
謝謝,它的工作! – HODA 2015-03-13 06:48:14
你好你知道我可以從我剛纔的問題刪除保持 – HODA 2015-03-13 07:03:04
嘗試使用後續解決它: 不和我一起工作 從船上選擇建設者其中,max(重) (選擇船團SUM(重量)由建造者) 列出已經訪問過至少兩個不同國家的郵輪導演的名字。我想這個代碼,但它並沒有爲我工作,以及 SELECT DISTINCT C1.DIRECTOR FROM CRUISE C1,C2 CRUISE WHERE = C1.DIRECTOR AND C2.DIRECTOR C1.SHIPNUM= C2.SHIPNUM – HODA 2015-03-13 07:29:50
避免子查詢,除非真的需要它們。您正在通過JOIN進入正確的解決方案。總重量(但你並不需要一個左連接,因爲如果ship
記錄不存在,那麼你不想來計算任何東西。)
SELECT COUNTRY, AVG(weight)
FROM VISIT
JOIN CRUISE USING (cruisenum)
JOIN SHIP USING (shipnum)
GROUP BY COUNTRY
你可以檢查下面我的其他查詢。謝謝 – HODA 2015-03-13 07:31:54
即使不需要*,子查詢也可以提供巨大的性能優勢。也就是說,我同意學習做舊事物的原則,然後引入新的(呃)技術。 – Strawberry 2015-03-13 08:36:31
@Strawberry,是的,在某些特定情況下,子查詢可以提供幫助。但是,這些都是相當專業化的,特別是對於那些最初使用SQL的人來說,一般規則應該是嘗試在不進行子查詢的情況下執行。這不是「老派」 - 除非你真的知道你在做什麼以及這些具體案例是什麼,否則這是很好的做法。 http://stackoverflow.com/questions/12365907/simple-mysql-subquery-performance – 2015-03-13 10:02:39
最大的建設者
select builder from ship where max(weight) in
(select SUM(WEIGHT) from ship group by builder)
列出已訪問過至少兩個不同國家的郵輪導演的姓名。我試過這段代碼,但它對我來說不起作用
SELECT DISTINCT C1.DIRECTOR
FROM CRUISE C1 , CRUISE C2
WHERE C1.DIRECTOR =C2.DIRECTOR AND C1.SHIPNUM = C2.SHIPNUM
這是我的其他問題 – HODA 2015-03-13 07:32:22
問另一個問題作爲你自己問題的答案不是SO方式...... :-) – 2015-03-13 09:56:42
請改善問題的格式以增加獲得答案的機會。 – ByteHamster 2015-03-13 06:34:38