Favicon Svetmobilne.cz  Svět mobilně Favicon Svetaudia.cz  Svět audia Favicon TVFreak.cz  TV Freak   Fórum Favicon Digimanie.cz  Digimanie   Fórum   Galerie Společnost oXy Online s.r.o.
Zobrazené výsledky: 1 až 4 z 4

Téma: MySQL a JOIN

  1. #1
    Obyvatel SHW
    Registrace
    Jan 2009
    Příspěvků
    322

    jaké jsou rozdíly v mysql mezi joiny

    nějak nechápu rozdíl

    INNER, CROSS, STRAIGHT_JOIN, LEFT, OUTER, NATURAL

    co se týče rychlosti mysql resp. jakým způsobem se v databázi vybírá = rychlost
    Odpovídat lze po přihlášení

  2. #2
    Starousedlík SHW
    Registrace
    Jul 2006
    Příspěvků
    1,011

    Zkus hledat, je to popsané snad všude...
    inner - klíč musí existovat v obou tabulkách
    left/right outer - stačí, že záznam existuje v levé/pravé tabulce, všechna pole záznamů z druhé tabulky jsou doplňeny hodnotou NULL
    cross,straight,natural - možná budou jen alternativní názvy.

    select
    f.name, f.id, ko.name
    from
    firmy f
    left outer join kontaktniosoby ko on (ko.firma_id == f.id)

    vypise vsechny firmy (s vice kontaktnimi osobami vickrat), pokud neni zadna kontaktni osoba, tak ko.name bude NULL
    samotny (inner) join by vypsal jen firmy s vyplnenymi kontaktnimi osobami

    priklad je po pameti, nemusi fungovat
    Odpovídat lze po přihlášení



  3. #3
    Starousedlík SHW
    Registrace
    May 2006
    Příspěvků
    4,042

    http://en.wikipedia.org/wiki/Join_(SQL)
    Snažil ses chlape aspoň chvíli hledat? :-)
    Odpovídat lze po přihlášení

  4. #4
    Občasný diskutér
    Registrace
    Sep 2008
    Příspěvků
    69

    Vzhledem k tomu ze se ptas na rozdily v rychlostech, tak predpokladam, ze netusis o co jde, kazdy z tech joinu ma uplne jiny vyznam.
    V prilozenem obrazku (pokud se to povedlo prilozit je to znazorneno graficky). V praxi to vypada takto
    Tabulka 1 (T1)
    Klic Jmeno
    1 Pepa
    2 Jarda

    Tabulka 2 (T2)
    Klic Prijmeno
    1 Novak
    3 Pokorny

    Tabulka 1 je vzdy prvni, tabulka 2 je vzdy druha, joinuje se pres klic. Poradi je klic jmeno prijmeni.
    T1 Inner join T2
    1 Pepa Novak

    T1 Left join T2
    1 Pepa Novak
    2 Jarda NULL

    T1 rigth join T2
    1 Pepa Novak
    3 NULL Pokorny

    T1 outer join T2
    1 Pepa Novak
    2 Jarda NULL
    3 NULL Pokorny

    T1 cross join T2 (tady musej byt klice z obou, poradi je klicT1 klicT2 jmeno prijmeno
    1 1 Pepa Novak
    1 3 Pepa Pokorny
    2 1 Jarda Novak
    2 3 Jarda Pokorny

    Natural join si myslim pouze automaticky vybere sloupce podle kterych joinovat - asi bych raci nepouzival.
    Připojené obrázky Připojené obrázky Klikněte na náhled pro zobrazení v plné velikosti 
Název: Joins.GIF 
Zobrazení: 212 
Velikost: 11.1 KB 
ID: 9522  
    Odpovídat lze po přihlášení

Podobná témata

  1. Ukládání do databáze mysql
    Od typek.cz v sekci Programování
    Reakcí: 1
    Poslední příspěvek: 05-04-2012, 15:25
  2. MySQL LOCK TABLES
    Od petr.svec v sekci Programování
    Reakcí: 2
    Poslední příspěvek: 02-09-2010, 09:39
  3. uzamčení tabulek v mysql
    Od petr.svec v sekci Programování
    Reakcí: 1
    Poslední příspěvek: 02-01-2010, 22:53
  4. mysql set @variable
    Od petr.svec v sekci Programování
    Reakcí: 5
    Poslední příspěvek: 04-12-2009, 11:07
  5. mysql: vynechání order by
    Od petr.svec v sekci Programování
    Reakcí: 10
    Poslední příspěvek: 26-10-2009, 10:01