Join'ler
Eğer iki tablodan da sütun seçmiyorsan ya da tablolar arasında tanımlı bir ilişki yoksa, yine de bir tablo üzerinde .join() metodunu kullanarak onu başka bir tabloyla birleştirebilir ve sorgunla ilgili ek veriler alabilirsin. join() ilk argüman olarak birleştirmek istediğin tablo nesnesini, ikinci argüman olarak ise tabloların nasıl ilişkili olduğunu belirten koşulu alır. Son olarak, select ifadesi üzerinde .select_from() metodunu kullanarak join ifadesini sarmalarsın. Örneğin, videoda Jason, census tablosunu state_fact tablosuyla, census tablosundaki state sütunu state_fact tablosundaki name sütununa karşılık gelecek şekilde aşağıdaki kodla birleştirdi:
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Bu egzersiz, kursun bir parçasıdır
Python ile Veritabanlarına Giriş
Egzersiz talimatları
censusvestate_facttablolarındaki TÜM sütunları seçecek bir ifade oluştur. Örneğin iki tabloemployeesvesalesolsaydı, tüm sütunları seçmek içinstmt = select([employees, sales])kullanırdın.stmtifadesine birselect_fromekleyerekcensustablosunu,censusiçindekistatesütunu ilestate_factiçindekinamesütununa görestate_facttablosuna join et.- İfadeyi çalıştırarak ilk sonucu al ve
resultolarak kaydet. Bu kod zaten yazıldı. - Sonuç nesnesinin anahtarları üzerinde döngü kurup her birinin anahtar ve değerini yazdırmak için yanıtı gönder!
Uygulamalı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
# Build a statement to select the census and state_fact tables: stmt
stmt = select([____, ____])
# Add a select_from clause that wraps a join for the census and state_fact
# tables where the census state column and state_fact name column match
stmt_join = stmt.select_from(
____(____, census.columns.____ == state_fact.columns.____))
# Execute the statement and get the first result: result
result = connection.execute(stmt_join).first()
# Loop over the keys in the result object and print the key and value
for key in result.keys():
print(key, getattr(result, key))