欧美麻豆久久久久久中文_成年免费观看_男人天堂亚洲成人_中国一级片_动漫黄网站免费永久在线观看_国产精品自产av一区二区三区

中培偉業IT資訊頻道
您現在的位置:首頁 > IT資訊 > 數據庫 > 使用SQLZOO學習自我JOIN查詢

使用SQLZOO學習自我JOIN查詢

2020-07-21 17:11:33 | 來源:中培企業IT培訓網

 理解SQL問題的唯一方法是了解您正在處理的數據。如果您無法以某種方式可視化表,則SQL的整個業務將變得非常抽象。因此,我們要做的第一件事是了解問題編號為No的表。讓我們看一下我們的數據庫。本文使用Self JOIN SQL ZOO教程上的練習編號10,以一種對初學者友好的方式來教授self JOIN。

假設您已經了解基本知識,所以我不會講授如何編寫SQL查詢。相反,我將展示如何嘗試理解數據庫。我將思考過程分為以下步驟。

  1.選擇所有項目

如果我們的表有數百萬行,則返回所有項目的查詢可能需要花費很多時間才能加載。您始終可以使用LIMIT 50或類似的方式,這樣就不會永久加載表。在我們的例子中,SQL ZOO已經只返回查詢的前50行,因此我們不必擔心。讓我們看看它是什么樣的。

好了,id和stop是我們用來連接兩個表的鍵,這就是為什么它們在每一行中總是相同的原因。我們得到了車站的名稱,公共汽車號和公共汽車公司。我們從一個較早的問題中了解到,通常我們會按編號和公司名稱來引用總線,例如“ 124 SMT”。因此,通過查看我們的表,我們可以假設在A的車站我們可以乘坐124 SMT公共汽車。

到目前為止,一切都很好,但是我花了更多時間來了解pos是什么。在頁面的開始,有一個鏈接可以將我們帶到一個地方,他們可以告訴我們表中每一列的含義。他們說pos是停靠點的順序,但是我仍然無法僅通過查看表格就可以看到它的含義。現在,對我們而言,好消息是我們不需要使用pos來解決問題,但是我仍然會告訴您如何在下一步中理解它。

  2.使用ORDER BY了解發生了什么

如果我們被責令NUM然后通過位置,我們會看到“1輕軌的巴士,例如,從利思葉然后在往返去,直到它在其他9個站停車后回來雷斯。如果我們坐下來,我們會發現并不是所有的公交車都是往返的,因為它們不會總是停在起點的同一站。

就像我說的那樣,我們不需要在此練習中使用pos,但是,如果我們試圖查找(例如)不僅可用的公交車,而且要查找最短的路線,這可能會很有用。

好的,現在我們對正在發生的事情有了更清晰的了解,讓我們看看問題想要我們做什么。

好的,所以,通過告訴我們我們需要兩輛巴士,我們知道從A地點到B地點沒有直達的巴士。換句話說,我們需要找到在A停靠的公交車,以及在B停靠的公交車。因為那是他們下車和換乘公共汽車的地方。我希望這很清楚。正如我所說,不查看地圖可能很難將其可視化。但希望它會在一秒鐘內變得更加清晰。

與一切一樣,我們可以通過多種方式來做事情。在進行下一步時,請記住這一點。

  3.永遠不要忘記自我聯接會創建一個新表

當您進行自我聯接時,您可能會試圖將其可視化為以某種方式聯接到自身的桌子。但是考慮的方式是兩個看起來完全一樣的單獨的表。您將新的加入第一個的一側。因為它們完全相同,所以任何列都可以成為鍵。換句話說,您可以選擇主鍵。這就是樂趣的開始!

現在,每行只有一個停靠站,但是對于下一步,我們需要另一個停靠站,即轉移停靠站。所以,這就是我們可以做的:我們可以將一個新的路由表連接到我們已經擁有ON num AND company的表。

您會看到,我們的r2表被追加到我們的r1表中,并累加了所有列。r1和r2始終具有相同的num和company(在相同的行中),因為這是我們加入它們的地方。

我們已經看到“ 1 LRT”線貫穿11個站點。這就是為什么我們可以在每個新站點看到站點名稱重復11行的原因。換句話說,您可以從Leith到達最右邊一列中列出的所有站點。讓我們減少顯示的列數,以便可以更好地查看數據。

  4.通過自我加入,橫向思考

在要過濾數據之前,容易造成一些損失。如果您將表格可視化為水平地圖,將很有幫助。在您的左邊,您將要離開的地方是:A。在您的右邊,您將擁有-我將很快顯示它-您的轉機站,然后是目的地。

因此,讓我們用“ A” 過濾列名。

因此,如果考慮到“ 停靠站”列,那么我們現在要看的是可以從A出發的所有停靠站的列表。

現在,想象一下我們可以為洛亨德做同樣的事情,但是不是將其作為出發,而是將其作為到達。讓我們看看會是什么樣子。

現在,“ 停止”列顯示了所有我們可以乘公共汽車前往洛興德的站點。

在此之前的查詢中,我們看到了可以從克雷格洛克哈特出發的所有停留站。在這一過程中,我們擁有前往洛興德的所有停留地點。換句話說,我們要做的就是將這兩個表連接在一起。同樣,請記住以下幾點:JOIN s將表水平或左右連接。有一種叫做UNION的東西可以垂直堆疊表-彼此疊放,但是JOIN可以將它們水平粘合。

那么,如何連接剛剛看到的這兩個查詢?我將首先向您展示很長的路要走,然后再向您展示較短的語法。

好了,我仍然沒有刪除不需要的列,但讓我們看一下。

現在,我們有四個路線表和一個停靠站表-向我們顯示了轉乘停靠站。現在,我們要做的是通過“ A”過濾r1的停靠點,并通過“ B”過濾r4的停靠點,我們將得到答案。為此,我們可以在表的開頭加入另一個Stops表,然后在表的末尾附加另一個Stops。但是,相反,我們可以將學到的知識用于子查詢,就像這樣。

我們得到了解決方案。我們怎么知道?它說“列太多”。因此,我們知道我們只需要調整顯示的列數即可。讓我們看一下問題標題。

它說某些數據仍然不正確。讓我們調查原因。如果我們向下滾動表格,則可以單擊一個鏈接,該鏈接向我們顯示答案的外觀。來做吧。

當我們將其答案與他們的答案進行比較時,我們意識到這可能只是按照他們希望的方式訂購色譜柱的問題。萬一您無法立即可視化要ORDER BY的列,則可能需要做一些試驗,但是最后,這就是我們要做的。

好極了!我們得到了笑臉和解決問題的方法。我只會向您展示的是針對同一解決方案的較短語法。

當然,它并沒有那么短,當然也沒有那么直觀,但是您已經擁有了。同樣重要的是要注意,當您使用JOIN ... ON語法時,始終可以在ON子句或WHERE上編寫條件。

上述就是關于使用SQLZOO學習自我JOIN查詢的全部內容,想了解更多關于SQL數據庫的信息,請繼續關注中培偉業。

標簽: SQL 數據庫
主站蜘蛛池模板: 中午字幕无线码一区2020 | 亚洲国产精品无码专区影院 | 精品无码一区二区三区爱欲九九 | 亚洲AV无码成人网站久久精品大 | 偷妻无码一区二区三区动漫 | 欧美bbwbbwbbwxxxx 在线看麻豆 | 最爱高潮全过程免费的视频 | 亚洲av中文无码字幕色本草 | 国产真实乱对白精彩久久 | AV无码中文字幕不卡一区二区三区 | 老师黑色丝袜被躁翻了AV | 亚洲午夜精品A片久久WWW慈禧 | 亚洲第一区国产精品 | 国产精品久久熟女另类卡通小说 | 中文字幕在线乱码不卡二区区 | 欧美黑人欧美黑人双交 | 法国啄木乌AV片在线播放 | 男男做爰猛烈叫床视频gv | 国产呦在线沙发 | 未满十八18禁止午夜免费网站 | 国产欧美日韩一区二区搜索 | japanesebbwbbwbbwbbwbbwbbw | 蜜臀在线视频 | 全免费又大粗又黄又爽少妇片 | 免费欧洲毛片a级视频无风险 | 狠狠做五月深爱婷婷伊人 | 国产野模私拍在线视频 | 日本一区二区三区视频在线观看 | 男吃奶玩乳尖高潮视频午夜 | 插插无码视频大全不卡网站 | www.17c.com.毛片| 网友自拍露脸国语对白 | 亚洲精品国产高清在线观看 | 黄色在线免费观看视频 | 天下第一社区视频WWW国语 | 秋霞午夜成人鲁丝片午夜精品 | 免费女人高潮流视频在线观看 | 无码人中文字幕 | 精品国产黑色丝袜高跟鞋 | 麻豆911传媒 | 国产自产区 |