php - 连接2个表时如何解决重复问题

标签 php mysql

我的数据库中有重复错误,当我输入 2 条记录时,我想使用 SELECT 命令通过终端显示它们,并在两个表之间连接,它们显示 4 条记录。这里我使用 no_servis 和 kode_pelanggan 的 2 个自动代码 前一列很好,当我更改数据库中的一列然后将其返回到原始列时。相反,像这样的错误

MariaDB [sijarvis]> SELECT * FROM tb_penerimaan;
| no_servis   | tgl_terima | kode_pelanggan | nama_perangkat | model_perangkat | no_model | keluhan       | kelengkapan    | dp    | status    | solusi        | harga  | presentase |

| SER00000001 | 2019-01-25 | PE000001       | ASUS           | Elitebook 8460p | CVT123   | projek        | meh            |  5000 | Di Servis | Instal Office | 150000 | 15         |
| SER00000002 | 2019-01-28 | PE000002       | ASUS           | X453SA          | asdasd   | nsdklfnskslii | nflsfndklnskln | 10012 | Di Servis |               |      0 |            |
+-------------+------------+----------------+----------------+-----------------+----------+---------------+----------------+-------+-----------+---------------+--------+------------+
2 rows in set (0.00 sec)

MariaDB [sijarvis]> SELECT * FROM tb_pelanggan;
+----------------+-------+--------+-------------+--------+
| kode_pelanggan | nama  | alamat | no_hp       | member |
+----------------+-------+--------+-------------+--------+
| PE000001       | admin | Hatimu | 05628675848 | member |
| PE000002       | Anggi | balen  | 987304209   | member |
+----------------+-------+--------+-------------+--------+
2 rows in set (0.00 sec)

MariaDB [sijarvis]> SELECT tb_penerimaan.* , tb_pelanggan.nama FROM tb_penerimaan, tb_pelanggan;
+-------------+------------+----------------+----------------+-----------------+----------+---------------+----------------+-------+-----------+---------------+--------+------------+-------+
| no_servis   | tgl_terima | kode_pelanggan | nama_perangkat | model_perangkat | no_model | keluhan       | kelengkapan    | dp    | status    | solusi        | harga  | presentase | nama  |
+-------------+------------+----------------+----------------+-----------------+----------+---------------+----------------+-------+-----------+---------------+--------+------------+-------+
| SER00000001 | 2019-01-25 | PE000001       | ASUS           | Elitebook 8460p | CVT123   | projek        | meh            |  5000 | Di Servis | Instal Office | 150000 | 15         | admin |
| SER00000002 | 2019-01-28 | PE000002       | ASUS           | X453SA          | asdasd   | nsdklfnskslii | nflsfndklnskln | 10012 | Di Servis |               |      0 |            | admin |
| SER00000001 | 2019-01-25 | PE000001       | ASUS           | Elitebook 8460p | CVT123   | projek        | meh            |  5000 | Di Servis | Instal Office | 150000 | 15         | Anggi |
| SER00000002 | 2019-01-28 | PE000002       | ASUS           | X453SA          | asdasd   | nsdklfnskslii | nflsfndklnskln | 10012 | Di Servis |               |      0 |            | Anggi |
+-------------+------------+----------------+----------------+-----------------+----------+---------------+----------------+-------+-----------+---------------+--------+------------+-------+
4 rows in set (0.00 sec)

为什么当我加入两个表时显示4条记录? 这是我从 tambah_transaksi.php 插入的查询

    <?php
  include('koneksi.php');
// Proses input data 
  $no_servis  = $_POST['no_servis'];
  $tgl_terima = $_POST['tgl_terima'];
  $nama_perangkat   = $_POST['nama_perangkat'];
  $model_perangkat  = $_POST['model_perangkat'];
  $no_model  = $_POST['no_model'];
  $keluhan = $_POST['keluhan'];
  $kelengkapan = $_POST['kelengkapan'];
  $dp = $_POST['dp'];
  $kode_pelanggan = $_POST['kode_pelanggan'];
  $nama = $_POST['nama'];
  $alamat = $_POST['alamat'];
  $nohp = $_POST['no_hp'];
  $member = $_POST['member'];
  $hak_akses = $_POST['hak_akses'];
  $password = $_POST['password'];
  $status = $_POST['status'];
  $solusi = $_POST['solusi'];
  $presentase = $_POST['presentase'];
  $harga  = $_POST['harga'];

// query SQL untuk insert data

  $query1 = "INSERT INTO tb_penerimaan VALUES('$no_servis','$tgl_terima','$kode_pelanggan','$nama_perangkat','$model_perangkat','$no_model','$keluhan','$kelengkapan','$dp','$status','$solusi','$harga','$presentase')";
  $query2 = "INSERT INTO tb_pelanggan VALUES('$kode_pelanggan','$nama','$alamat','$nohp','$member')";
  $query3 = "INSERT INTO login VALUES('$kode_pelanggan','$nama','$password','$hak_akses')";

  $hasil = mysql_query($query1);
  $hasil = mysql_query($query2);
  $hasil = mysql_query($query3);

    header("location: nota-masuk.php?no_servis='$no_servis'");

?>

最佳答案

您需要加入

SELECT tb_penerimaan.* , tb_pelanggan.nama 
FROM tb_penerimaan 
INNER JOIN  tb_pelanggan ON tb_penerimaan.tb_penerimaan  = tb_pelanggan.kode_pelanggan ;

如果不添加连接条件,您将获得行的笛卡尔积(对于一个表中的每一行,您选择另一个表中的所有行)..通过连接,您将建立仅选择匹配行的关系

关于php - 连接2个表时如何解决重复问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54420196/

相关文章:

php - 更改流行标签的字体大小

mysql - 选择所有具有非空关联记录的记录

php - 一个js文件在另一个php文件中的Javascript : calling document. ready()函数

php - php文件是如何保护的

php - 显示用户名 PHP MySql

导入大型 sql 文件时 MySQL 服务器消失了

mysql - 带有附加列的 SQL max

php - 在服务器上保存单个值的位置

php - 图像 DIV 覆盖子 DIV

php - 选择元素 - Post 方法 - 返回值/Php