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
| ID | NÁZEV | KATEGORIE | CENA | DATUM_PRODEJE | MNOZSTVI | CENA CELKEM |
| 1 | iPhone 13 | Smartphone | 19000 | 2024-01-10 | 2 | 38000 |
| 2 | MacBook Pro 14″ | Notebook | 39000 | 2024-01-15 | 1 | 39000 |
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>
