Adatok lehívásának variációi

Szerző
Üzenet
KillBill
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2007.03.26. Hétfő 5:42
Hozzászólások: 2237
Hozzászólás Elküldve: 2010.01.16. 10:51    Hozzászólás témája: Adatok lehívásának variációi
Hozzászólás az előzmény idézésével
Ennek a három lehívásnak ugyan az a végeredménye, de mi a különbség ?

Adminok kimerítő választ kérek :lol:

Kód:

        $sql = 'SELECT DISTINCT u.user_id, u.username, u.username_clean
                 FROM  '. ARCADE_SCORES_TABLE .' s,'. USERS_TABLE .' u
                   WHERE s.user_id = u.user_id
              ORDER BY u.username_clean ASC';
        $result = $db->sql_query($sql);
        $row = $db->sql_fetchrowset($result);
         $db->sql_freeresult($result);


Kód:

        $sql = 'SELECT DISTINCT u.user_id, u.username, u.username_clean
                 FROM      '. ARCADE_SCORES_TABLE .' s
              LEFT JOIN '. USERS_TABLE .' u
                   ON s.user_id = u.user_id
              ORDER BY u.username_clean ASC';
        $result = $db->sql_query($sql);
        $row = $db->sql_fetchrowset($result);
         $db->sql_freeresult($result);


Kód:

         $sql_array = array(
            'SELECT'   => 'u.user_id, u.username, u.username_clean',

            'FROM'      => array(
               ARCADE_SCORES_TABLE   => 's',
            ),

            'LEFT_JOIN'   => array(
               array(
                  'FROM'   => array(USERS_TABLE => 'u'),
                  'ON'   => 's.user_id = u.user_id'
               )
            ),

            'ORDER_BY'    => 'u.username_clean ASC',
         );

         $sql = $db->sql_build_query('SELECT_DISTINCT', $sql_array);
         $result = $db->sql_query($sql);

         $row = $db->sql_fetchrowset($result);
         $db->sql_freeresult($result);

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése MSN Messenger
fberci
Adminisztrátor
Adminisztrátor
Avatar

Csatlakozott: 2005.05.28. Szombat 1:00
Hozzászólások: 7388
Hozzászólás Elküldve: 2010.01.16. 14:47    Hozzászólás témája:
Hozzászólás az előzmény idézésével
A második és a harmadik pontosan ugyanaz, csak az egyik a DBAL sql_build_query() függvényét használja, a másik meg nem.

Az első annyiban különbözik a többitől, hogy az az arcade táblából csak azokat a sorokat adja vissza, amihez szigorúan tartozik a user táblában is bejegyzés. Mivel elvileg minden rögzített felhasználói azonosítóhoz tartozik egy bejegyzés a felhasználók táblában, ezért gyakorlati különbség nincs a két lekérés között, legfeljebb annyi, hogy a LEFT JOIN-t egy kicsivel gyorsabbnak tartják (én pl. mindig azt szoktam használni). Ha lenne pl. egy törölt felhasználó, akinek az azonosítója nem lett megváltoztatva a vendég felhasználóéra az arcade táblában, akkor a második és harmadik lekérés egy sora NULL-t adna vissza.
_________________
Üdv.: fberci
Kereső | Szabályzat | phpBB3 telepítés/frissítés/konvertálás | Útmutatók | Olympus - phpBB3 | Kérlek, ne küldj privát üzenetet nem személyes dologgal kapcsolatban!

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése
KillBill
Gyakorlott phpBB-s
Gyakorlott phpBB-s
Avatar

Csatlakozott: 2007.03.26. Hétfő 5:42
Hozzászólások: 2237
Hozzászólás Elküldve: 2010.01.16. 21:19    Hozzászólás témája:
Hozzászólás az előzmény idézésével
Ezer köszönet az infókért :wink:

Felhasználó profiljának megtekintése Privát üzenet küldése Felhasználó weblapjának megtekintése MSN Messenger
Hozzászólások megtekintése:  

Nem készíthetsz új témákat ebben a fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem módosíthatod a hozzászólásaidat a fórumban.
Nem törölheted a hozzászólásaidat a fórumban.
Nem szavazhatsz ebben fórumban.

Hirdetés
Hirdetés