Member 11712547 Ответов: 1

Дублирование данных Inner Join 3 таблицы на PHP MySqli


У меня есть дублирующая проблема при отображении данных с 3 различными таблицами в php с процедурным стилем mysqli ext. Мои столы таковы:

категория: id_kat, nama_kat

подкатегории: id_sub, id_kat, nama_sub

supersubkategori: id_supersub, id_sub, id_kat, nama_supersub, kategori_seo

Это мой код.:

<?php

    require "../config.php";

    $sql = "SELECT * FROM supersubkategori INNER JOIN kategori ON kategori.id_kat = supersubkategori.id_kat
                        INNER JOIN subkategori ON subkategori.id_kat = supersubkategori.id_kat ORDER BY id_supersub ASC";

    $result = mysqli_query($conn, $sql);

    if (mysqli_num_rows($result) > 0)
    {
        while ($data = mysqli_fetch_array($result))
        {
            echo "<tr class=\"table table-striped\">
                            <td align=\"left\">".$data['id_supersub']."</td>
                            <td align=\"left\">".$data['nama_supersub']."</td>
                            <td align=\"left\">".$data['nama_kat']."</td>
                            <td align=\"left\">".$data['nama_sub']."</td>
                            <td align=\"left\">
                                <a href=\"supersub_ubah.php?id_supersub=$data[id_supersub]\">Edit</a>
                                <a href=\"supersub_hapus.php?id_supersub=$data[id_supersub]\">Hapus</a>
                            </td>
                        </tr>";
        }
    }
        else
        {
            echo "Belum ada data.";
        }
    ?>

1 Ответов

Рейтинг:
2

Peter Leow

Во-первых, удалите id_kat из таблицы supersubkategori, так как она избыточна, и вы можете получить ее из таблицы subkategori с помощью id_sub, это касается http://www.studytonight.com/dbms/database-normalization.php[^]
Далее, вместо *, во-вторых, явно укажите выходные поля, например

SELECT ss.id_supersub, ss.nama_supersub, k.nama_kat, s.nama_sub FROM supersubkategori ss INNER JOIN subkategori s ON s.id_sub=ss.id_sub
INNER JOIN kategori k on s.id_kat = k.id_kat ORDER BY ss.id_supersub ASC