Databáze > Obecné

Funguje mi len RIGHT. LEFT v žiadnom prípade

(1/3) > >>

Stanislav Hruška:

Tabuľky FLATS a OWNER_FLAT sú prázdne. Nerozumiem prečo mi funguje len RIGHT a LEFT nie
--- Kód: ---SELECT F.IDFLATS, O.IDOWNERS, OWF.IDOWNER_FLAT, F.FLATNUMBER, O.FULLNAME, O.MOBIL
FROM
  FLATS F
  LEFT OUTER JOIN OWNER_FLAT OWF ON (F.IDFLATS = OWF.FKFLAT)
/*  LEFT OUTER JOIN OWNERS O ON (O.IDOWNERS = OWF.FKOWNERS)*/    //  DataSet je prázdny
/*  RIGHT OUTER JOIN OWNERS O ON (O.IDOWNERS = OWF.FKOWNERS)*/   // OK
/*  LEFT OUTER JOIN OWNERS O ON (OWF.FKOWNERS = O.IDOWNERS)*/    //  DataSet je prázdny
  RIGHT OUTER JOIN OWNERS O ON (OWF.FKOWNERS = O.IDOWNERS)      // OK
WHERE
  O.FKFOCS = 1331
--- Konec kódu ---

Jan Fiala:
Protože Left outer join se napojuje na existující data. Flats máš prázdné, proto v řídící tabulce nic není a Left outer join se nema na co napojit.

LEFT OUTER JOIN: Představ si, že máš nějakou tabulku (flats), ke které připojíš zprava (aby to nebylo tak jednoduché) další tabulku a co se ti potká, to se zobrazí, jinak null. Žádné řádky se nedoplňují.
RIGHT OUTER JOIN funguje jinak, ten přidá všechny řádky z tabulky, kterou připojuješ a co jde napojit, tak napojí.

Aby ti fungovalo LEFT OUTER JOIN, musel bys vycházet z Owners - z něčeho, kde data jsou.

Stanislav Hruška:
Tak o tom rozdiele medzi LEFT a RIGHT som nevedel! Dosť som toho čítal, ale nikde som na to nenarazil. Pritom to je podstatná informácia.
To vysvetľuje aj odporúčanie: vyhýbajte sa RIGHT, a používajte LEFT všade kde sa dá. Osobne som sa s tým stretol. Zrýchlenie bolo o dva rády.
Prikladám grafické znázornenie stavu. Údaje sú len vo FLATS.

pf1957:

--- Citace: Stanislav Hruška  25-10-2020, 12:26:13 ---Tak o tom rozdiele medzi LEFT a RIGHT som nevedel! Dosť som toho čítal, ale nikde som na to nenarazil. Pritom to je podstatná informácia.
To vysvetľuje aj odporúčanie: vyhýbajte sa RIGHT, a používajte LEFT všade kde sa dá.

--- Konce citace ---
No proto je to taky soucasti kazdeho ucebniho textu SQL napr.
https://www.google.com/search?q=LEFT+vs.+RIGHT+join&client=firefox-b-d&sxsrf=ALeKk03k_pdEBAm2dWv18o2t05wCC3bcig:1603642231384&tbm=isch&source=iu&ictx=1&fir=b11_SCzJzb_wYM%252CinY1wXI3NvD6cM%252C_&vet=1&usg=AI4_-kS1DA4pqRcZJAkFeEQVKO0HjxIuQg&sa=X&ved=2ahUKEwjQkLHskNDsAhXCDGMBHe64AisQ_h16BAgJEAc#imgrc=b11_SCzJzb_wYM

To doporuceni je obecne pic*vina, protoze zalezi, co mas na leve/prave strane

Stanislav Hruška:
To odporúčanie máš na mysli toto
--- Citace ---Aby ti fungovalo LEFT OUTER JOIN, musel bys vycházet z Owners - z něčeho, kde data jsou.
--- Konce citace ---
Lebo ak áno, tak Owners je zle. Ale pokračuje ďalej a tam to upresňuje. Takže s tým problém nemám.
Problém je s tým, že nemám žiadnu tabuľku, ktorú by som tu mohol použiť. Ostáva mi jedine RIGHT.
Veľmi ma to netrápi, lebo sa to použije pre každé SVB jediný raz.
Pozerám na ten odkaz, ale všade vidím, že obrázok pre RIGHTT je zrkadlový obraz LEFT.
Nič také, čo tu popisuje Fiala.

Navigace

[0] Seznam témat

[#] Další strana

Přejít na plnou verzi