⊗pyPmDOGD 123 of 129 menu

მონაცემების მიღება დაკავშირებული ცხრილებიდან Python-ში

მოდით, შევქმნათ მოთხოვნა, რომელიც დააბრუნებს ყველა მომხმარებელს მათ ქალაქებთან ერთად. ამისთვის დაგვჭირდება ბრძანება LEFT JOIN:

მისი სინტაქსი ასე გამოიყურება:

SELECT ველები FROM ცხრილის_სახელი LEFT JOIN დაკავშირებული_ცხრილის_სახელი ON კავშირის_პირობა WHERE არჩევის_პირობა

მოდით, განვიხილოთ ამ ბრძანების სინტაქსის ცალკეული ნაწილები.

ველები

ვინაიდან არჩევა ხდება რამდენიმე ცხრილიდან, ყველა ველის არჩევა *-ის მეშვეობით არ იმუშავებს. შემდეგი მოთხოვნა აირჩევს ველებს მხოლოდ მთავარი ცხრილიდან, მაგრამ არა დაკავშირებული ცხრილიდან:

SELECT *

იმისთვის, რომ მონაცემები აირჩეს ყველა ცხრილიდან, საჭიროა *-მდე მიუთითოთ არჩევის ცხრილის სახელი:

SELECT users.*, cities.*

ან შეგიძლიათ ჩამოწეროთ ჩვენთვის საჭირო ველები მათ წინ ცხრილის სახელის მითითებით:

SELECT users.name, cities.name

ამ ორ გზას აქვს პრობლემა. საქმე იმაშია, რომ თუ ცხრილებში ველებს აქვთ ერთი და იგივე სახელები, მაშინ Python-ის მასივში მოხდება სახელების კონფლიქტი და მხოლოდ ერთი ველი გადარჩება, ხოლო მეორე არ იქნება.

პრობლემის მოსაგვარებლად საჭიროა კონფლიქტური სახელების გადარქმევა ბრძანების as მეშვეობით:

SELECT users.name, cities.name as city_name

კავშირი

ON ბრძანების შემდეგ ჩვენ უნდა მივუთითოთ ორი ცხრილის ის ველები, რომლებზეც ხდება კავშირი. ჩვენს შემთხვევაში ეს იქნება ველი id ქალაქების ცხრილიდან და ველი city_id მომხმარებლების ცხრილიდან:

ON cities.id=users.city_id

მოთხოვნა

საბოლოოდ, მოთხოვნა, რომელიც დააბრუნებს მომხმარებლებს მათ ქალაქებთან ერთად, ასე გამოიყურება:

SELECT users.name, cities.name as city_name FROM users LEFT JOIN cities ON cities.id=users.city_id

პრაქტიკული ამოცანები

დავუშვათ, გაქვთ ცხრილი პროდუქტებით და ცხრილი მათი კატეგორიებით. დაწერეთ მოთხოვნა, რომელიც დააბრუნებს პროდუქტების სახელებს მათ კატეგორიებთან ერთად.

ქართული
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語Қазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
ვებსაიტის მუშაობის, ანალიტიკისა და პერსონალიზაციისთვის ვიყენებთ ქუქი-ფაილებს. მონაცემთა დამუშავება ხდება Კონფიდენციალურობის პოლიტიკის შესაბამისად.
ყველას მიღება პარამეტრები უარყოფა