Připojení k databázovému serveru přes Adminer

  1. Ve webovém prohlížeči otevřte stránku sexta.dominec.eu/adminer.php.

  2. Jako typ databáze vyberte PostgreSQL, jako hostitele napište localhost (je potřeba to ručně vepsat, přestože už je tahle hodnota šedivě naznačená). Jméno uživatele, heslo i jméno databáze vyplňte jako sexta.

    přihlašovací okno

  3. Klikněte na tlačítko Přihlásit se. Jestli chcete, můžete předtím zakliknout Trvalé přihlášení.

  4. Ukáže se vám přehled všech tabulek, ke kterým máte přístup. Vlevo v seznamu můžete kliknout na vypsat (1) vedle názvu některé z nich, abyste se podívali na její data. Složitější dotazy můžete psát do okna SQL příkaz (2) v horní části levého panelu.

    rozhraní adminer

Výborně, jste připojení k databázi. Teď si vyzkoušejte, že vás poslouchá na slovo.

První kroky

  1. Klikněte na vypsat vedle tabulky routes. Ukáže se okno s obsahem tabulky, a v jeho horní části se vypíše SQL dotaz, který pro vás data získal.

    výpis tabulky routes

  2. Klikněte na odkaz Upravit vedle zobrazeného SQL dotazu (1). Ukáže se okno, kde můžete odkaz upravit nebo napsat úplně nanovo.

  3. Smažte na konci dotazu LIMIT 50, aby se vypisovaly všechny řádky. Tabulka routes má asi osm set řádků, takže si můžeme dovolit je vidět všechny naráz. Klikněte na tlačítko Provést, abyste se ujistili, že dotaz pořád funguje.

    úprava SQL dotazu

  4. Po provedení příkazu se nejdřív vypíšou výsledky a až dole, na konci stránky, najdete dotazovací okno. Upravte dotaz, aby jako výsledek získával jen celkový počet řádků. (Tahák: COUNT)

    dotaz na počet řádků

  5. Chceme přece jenom podrobnější údaje: řádky máme rozdělit podle toho, co mají vyplněné jako agency_id. Přidejte na konec dotazu požadavek na seskupení. (Tahák: GROUP BY)

    agregované počty řádků

  6. Čísla jsou k ničemu, když nevíme, co znamenají. Upravte v dotazu SELECT tak, aby kromě počtu získal i hodnotu ve sloupci agency_id. (Tahák: SELECT)

    počty řádků s identifikací každé skupiny

Druhé kroky

Dosavadní postup zřejmě vede dobrým směrem, ale namísto čísel agency_id potřebujeme jméno každého dopravce. To najdeme v tabulce agency.

  1. Vedle tabulky agency klikněte na vypsat.

  2. Nad výsledky dotazu rozbalte panýlek Seřadit a z rozbalovací nabídky vyberte agency_id.

  3. Rozbalte panýlek Vypsat a v pravé rozbalovací nabídce vyberte agency_id. Potom v nabídce pod ní vyberte agency_name.

    jména dopravců

Tabulka pro odevzdání

Než odevzdáme svoje výsledky, musíme si pro ně připravit místo. Vytvoříme tabulku se dvěma sloupci agency_name a route_count takovými, že do nich výsledky půjde odevzdat.

  1. V levém panelu klikněte na Vytvořit tabulku.

  2. Jako Název tabulky vyplňte svoje příjmení.

  3. Jako Název sloupce vyplňte agency_name a rozbalovací nabídku Typ přepněte na text.

  4. Další sloupec pojmenujte route_count a jeho Typ nechte jako integer.

  5. Klikněte na Uložit.

    formulář pro vytvoření tabulky

Varianta pro trpělivé

Máme výsledky z jedné a z druhé tabulky, které na sebe pasují přes agency_id. Můžeme je ručně vložit vedle sebe v Excelu, ujistit se, že pořádí agency_id v levé a v pravé části opravdu pasuje, a pak nějak vkopírovat zpátky do databáze a odevzdat. Tahle varianta je jednoduchá, ale docela pracná.

  1. Výsledky z jednoho a druhého dotazu zkopírujte (ctrl+C, ctrl+V) do excelovské tabulky a správně seřaďte. Jestli je nemůžete zkopírovat, protože jste mezitím zavřeli okno s dotazem, můžete si otevřít panýlek Historie, kde svůj dotaz možná najdete.

    tabulka v excelu

  2. V Admineru otevřte tabulku pojmenovanou jako vaše příjmení a klikněte na Nová položka.

  3. Zkopírujte název dopravce z prvního řádku a počet obsluhovaných linek do příslušných políček a klikněte na Uložit.

  4. Vedle zprávy Položka byla vytvořena klikněte na odkaz SQL příkaz a potom na Upravit.

    sql příkaz pro vložení jednoho řádku

  5. Do textového okna nakopírujte hodnoty ze všech zbývajících řádků, každou dvojici v závorce, od sebe oddělené čárkami. Je to blbá práce, ale snad přece jenom rychlejší, než abyste každý řádek vkládali přes formulář jednotlivě. Dejte pozor, aby pořadí hodnot v každém řádku odpovídalo pořadí sloupců v tabulce.

    sql příkaz pro vložení mnoha řádků

Varianta pro systematicky uvažující

Blbou práci má dělat počítač, ne člověk. Spojíme SQL dotazy dohromady, abychom ke každému dopravci rovnou získali počet linek.

  1. Připomeňte si dotaz, který získá počet linek každého dopravce.

    počty řádků s identifikací každé skupiny

  2. Vedle tabulky agency klikněte na vypsat. Rozbalte panýlek Vyhledat a z rozbalovací nabídky vyberte agency_id. Za značku = (tu nechte, jak je) napište nějaké konkrétní číslo, které v tabulce vidíte. Rozbalte panýlek Vypsat a v pravé části vyberte agency_name.

    dotaz na jméno konkrétního dopravce

  3. Kolem tohohle dotazu, který získává jméno dopravce podle jeho čísla, napište kulaté závorky, a pak si ho zkopírujte. Vložte ho jako další hodnotu do SELECT části svého prvního dotazu, který získával počet linek.

    almost there

  4. Místo konkrétního čísla v tom vnořeném dotazu napište odkaz na sloupec routes.agency_id. Můžete smazat část LIMIT 50, protože nemá žádný vliv.

    hotová data

  5. Před celý hotový dotaz napište INSERT tak, aby se získané hodnoty vložily do vaší tabulky. (Tahák: INSERT ... SELECT)

    dotaz pro řešení