Alt+Shift+horní„2”

Jazyk / Language

Skok dolů na unikátní obsah stránky


Styl zobrazení


Nástroje

Vyhledávání

(Skok sem: Alt+Shift+4)

Sdílet odkaz na stránku

Facebook e-mail Twitter Linkuj.cz Google Bookmarks

Citovat stránku

Citovat podle ČSN ISO 690 (jiný web, nový panel)

Co se kde děje?
– Novinky mimo web

  • 22.5.2013 19:30, Černilov:Promítání / cestopisná prezentace Na kolech z Náchoda do Monaka a zpátky.
    Kulturní dům Černilov
  • Kdo jste mi 25.3. a v noci na 26.3. posílal e-mail, pošlete mi ho znovu, protože všechny tyto zprávy byly chybou konfigurace smazány, aniž bych je viděl.
    All e-mail messagess sent to me on 25th March (and night after) were deleted by error, send it again if you have sent me something.
  • 8.6.2013, NáchodSraz šlapacích vozítek, zejména Moskvičů
    Šlapací Moskviče (jiný web, nový panel)

     

  • 25.9.2013 18 h, Hradec Králové:Promítání / cestopisná prezentace Na kolech z Náchoda do Monaka a zpátky.
    Studijní a vědecká knihovna HK

Jste tu opakovaně?
– Novinky na webu

Jste tu poprvé?
– Výběr z webu


Technologie

Validní XHTML 1.1 Validní CSS styly Nejvyšší úroveň přístupnosti pro nevidomé a slabozraké návštěvníky podle Blind Friendly Dogma W4D pro přístupnost a přehlednost webu Využito PHP5 Využito MySQL5 Využit Javascript Cookies

Prohlížeče a rozlišení

Stránka testována v prohlížečích

Různé prohlížeče (ilustrační obrázek převzat)
  1. FF
  2. MS IE 9
  3. Chrome
  4. Mini Opera
  5. MS IEM 7.1 ve WM 6.1

při 176x220 až 1680x1050 px (ne všechny kombinace).
Důraz na FF při 1280x1024 px.


SQL: Svislé spojení tabulek
se zachováním informace o zdroji každého řádku

Nacházíte se: Martin Adámek > Vlastní tvorba > Programy > SQL: Svislé spojení tabulek
 

 

Vytvořeno
28.6.2012

Pokud potřebujete v SQL vertikálně spojit tabulky se stejnou strukturou,
seřadit v nich společně data podle zvoleného kritéria,
a zachovat si informaci, ze které tabulky který řádek pochází
(vytvořit sloupec s označením zdroje),

můžete pomocí sjednocení UNION spojit dotazy SELECT,
a abyste věděli, ze které tabulky řádek je, můžete do každého dotazu přidat konstantu.

Dá se totiž předpokládat, že v každé tabulce bude id (či jiný primární klíč) začínat od jedničky,
a že podle id tedy příslušnost řádku k tabulce nepoznáte.

Příklad se syntaxí PHP…
$dotaz    =  "SELECT *, 'prvni' as zdroj FROM prvnitabulka WHERE verejny='1' AND datum <= NOW() AND rubrika>=18 AND rubrika<=25
              UNION 
              SELECT *, 'druhy' as zdroj FROM druhatabulka WHERE verejny='1' AND datum <= NOW() AND (rubrika=1 OR rubrika=5 OR rubrika=7)
              ORDER BY datum DESC 
              LIMIT 50;"
$vysledek =   mysql_query($dotaz);
                  
while ($radek = mysql_fetch_array($vysledek)) 
  { // Tady máme kromě ostatních sloupců k dispozici i proměnnou $radek["zdroj"], ve které nalezneme hodnotu 'prvni', nebo 'druhy';
  }

Podmínky pro výběr dat (datum – např. aby se nezobrazovaly články, které teprve mají být vydány; rubrika) můžete zadat za WHERE v každém dotazu samostatně, tedy i v jednotlivých dotazech různě.
Pokud chcete vypsat např. 50 nejnovějších článků myšleno dohromady z obou zdrojů,
tak „ORDER BY” a LIMIT napište za celé spojení, aby se vybralo opravdu 50 nejnovějších článků z obou zdrojů souhrnně.

V praxi takové spojení využijete např. když budete potřebovat vytvořit sestavu nejnovějších článků ze dvou původně izolovaných časopisů,
pokud mají tabulky stejnou strukturu a jsou ve stejné databázi.
Díky zachování informace o původu článku pak budete vědět, kam máte odkázat na plné znění článku.

Data ze všech tabulek tak jsou sloučena v jednom výsledku
a podle sloupce zdroj poznáte, ze které původní tabulky který řádek pochází.

Pokud těch tabulek potřebujete spojit více, tak nic nebrání tomu, abyste textový řetězec s dotazem vytvořili pomocí for cyklu (nebo foreach nad polem) a konstantu do každého dotazu vkládali automatizovaně (přímo pořadové číslo z proměnné $i, kterou budete počítat průchody cyklu; nebo pomocí pole textových řetězců můžete vkládat názvy).

Více se o sjednocení tabulek pomocí UNION dozvíte na w3c schools.com – SQL UNION Operator (jiný web, nový panel).

 

Skok nahoru na navigační menu

Pro rozptýlení

- Jak se máš?
- Super, jen mě hrozně bolí prsty.
- A co se stalo?
- Včera jsme na chatu měli oslavu a celou noc jsme zpívali.

Pro zamyšlení

Raději zemřu nežli bych pravdu odvolal a lži a klamu sloužil.
[Mistr Jan Hus]


 

(c) Ing. Martin Adámek, www.adamek.cz , Náchod

Skryté počítadlo