< Všechna témata
Tisk

Výpis dat z více tabulek do jedné

V tomto skriptu vypíšeme pomocí dotazů vypíšeme data spojením dvou tabulek, a to prodeje a produkty. Spojování proběhne na klíči produkty.id s prodeje.produkt_id.

Přidám ještě sloupec cenaCelkem, který mezi sebou násobní sloupce produkty.cena a prodeje.mnozstvi.

Má tabulka bude tedy vypadat nějak takto

IDNÁZEVKATEGORIECENADATUM_PRODEJEMNOZSTVICENA CELKEM
1iPhone 13Smartphone190002024-01-10238000
2MacBook Pro 14″Notebook390002024-01-15139000

SQL dotaz – pomocí JOIN

Zvolím si sloupce, které budu vypisovat z jedné tabulky (produkty) a propojím je (JOIN) s prodeji na klíči produkty.id (p.id) s klíčem prodeje.produkt_id (s.produkt_id) a nakonec seřadím podle data prodeje.

SELECT p.id, p.nazev, p.kategorie, p.cena, s.datum_prodeje, s.mnozstvi, p.cena * s.mnozstvi AS cenaCelkem
FROM produkty p
JOIN prodeje s ON p.id = s.produkt_id
ORDER BY s.datum_prodeje;

SQL dotaz – pomocí WHERE

Zvolím si sloupce, které budu vypisovat z obou tabulek a pomocí podmínky WHERE je spojím s prodeji na klíči produkty.id (p.id) s klíčem prodeje.produkt_id (s.produkt_id) a nakonec seřadím podle data prodeje.

SELECT p.id, p.nazev, p.kategorie, p.cena, s.datum_prodeje, s.mnozstvi, p.cena * s.mnozstvi AS cenaCelkem
FROM produkty p, prodeje s
WHERE p.id = s.produkt_id
ORDER BY s.datum_prodeje;

PHP Skript

Skript je podobný skriptu s jednoduchým výpisem, pokud používám vlastní sloupec (AS), musím ho při výpisu napsat stejně.

Můžu přidat i za PHP direktivu nějaký suffix (např. Kč, ks apod..).

<?php
$pageTitle = "Výpis prodejů produktů"; // název stránky - NEODSTRAŇUJ!
include 'header.php'; // vloží předchystané menu ze šablony - NEODSTRAŇUJ!
include 'db.php';
?>
<table class="table table-bordered text-center">
    <thead class="table-dark">
    <tr>
        <th>ID</th>
        <th>NÁZEV</th>
        <th>KATEGORIE</th>
        <th>CENA</th>
        <th>DATUM PRODEJE</th>
        <th>MNOŽSTVÍ</th>
        <th>CENA CELKEM</th>

    </tr>
    </thead>

    <?php
    $sql = "SELECT p.id, p.nazev, p.kategorie, p.cena, s.datum_prodeje, s.mnozstvi, p.cena * s.mnozstvi AS cenaCelkem
FROM produkty p, prodeje s
WHERE p.id = s.produkt_id
ORDER BY s.datum_prodeje";

    $result = $mysqli->query($sql);

    while($row = $result->fetch_assoc()): ?>
        <tr>
            <td><?= $row["id"] ?></td>
            <td><?= $row["nazev"]?></td>
            <td><?= $row["kategorie"]?></td>
            <td><?= $row["cena"]?> Kč</td>
            <td><?= $row["datum_prodeje"]?></td>
            <td><?= $row["mnozstvi"]?> ks</td>
            <td><?= $row["cenaCelkem"]?> Kč</td>
        </tr>
    <?php endwhile; ?>

</table>
</body>

Výsledek

Obsah
© 2025 Lukáš Pospíšil