Firdaus Archive

Blog pribadi untuk curhat, share tentang script, software, kuliah, project IT dan seputar IT.

Tampilkan postingan dengan label Database. Tampilkan semua postingan

MySQL Pelajari Penting

 - Limit ... Offset...

- Group_Concat

- Self Join (https://www.educba.com/mysql-self-join/)

MySQL LAST_INSERT_ID() how it works at multi-users environment

 Untuk mengambil data id yang terakhir di insertkan bisa memakai fungsi berikut

LAST_INSERT_ID()

LAST_INSERT_ID() gives you the last autogenerated id on the connection you execute it on, it does not return the last insert id globally produced by the MySQL server.


sauce : https://stackoverflow.com/questions/5835677/last-insert-id-how-it-works-at-multi-users-environment

MySQL Stored Procedure : Create a procedure to insert and update table header and details in mysql

Stack Overflow answer powered by AI 
To create a stored procedure in MySQL that can be used to insert and update table header and details, you can follow this example:

DELIMITER //

CREATE PROCEDURE insert_update_table (IN p_header_value VARCHAR(50), IN p_detail_value VARCHAR(50))
BEGIN
    -- Check if the header already exists in the table
    IF EXISTS (SELECT * FROM your_table WHERE header_column = p_header_value) THEN
        -- Update the existing record
        UPDATE your_table SET detail_column = p_detail_value WHERE header_column = p_header_value;
    ELSE
        -- Insert a new record
        INSERT INTO your_table (header_column, detail_column) VALUES (p_header_value, p_detail_value);
    END IF;
END //

DELIMITER ;


In this example, replace your_table with the actual name of your table, header_column with the name of the column where you want to store the header value, and detail_column with the name of the column where you want to store the detail value. To use the procedure, you can call it like this: 

CALL insert_update_table('Header Value', 'Detail Value'); 

 This will either update the existing record with the provided header value and detail value if the header value already exists, or insert a new record with the provided values if the header value doesn't exist in the table.

MySQL Stored Procedure : Insert Data in Header and Detail within 1 Transaction

This is Generated by ChatGPT 2023-11-01

To insert data into a single-row header table and multiple-row detail table using a stored procedure in MySQL, you can follow these steps. In this example, we'll create two tables: header and detail, with a one-to-many relationship, and then create a stored procedure to insert data into both tables.

Assuming you have the following tables:

CREATE TABLE header (

    header_id INT AUTO_INCREMENT PRIMARY KEY,

    header_data VARCHAR(255)

);


CREATE TABLE detail (

    detail_id INT AUTO_INCREMENT PRIMARY KEY,

    header_id INT,

    detail_data VARCHAR(255),

    FOREIGN KEY (header_id) REFERENCES header(header_id)

);

Here's a stored procedure to insert data into both tables:

DELIMITER $$


CREATE PROCEDURE InsertHeaderAndDetails(

    IN headerData VARCHAR(255),

    IN detailDataArray JSON

)

BEGIN

    DECLARE done INT DEFAULT FALSE;

    DECLARE detailValue VARCHAR(255);

    DECLARE cur CURSOR FOR SELECT value FROM JSON_TABLE(detailDataArray, '$[*]' COLUMNS(value VARCHAR(255) PATH '$'));

    

    -- Insert data into the header table

    INSERT INTO header (header_data) VALUES (headerData);

    SET @lastHeaderID = LAST_INSERT_ID(); -- Get the last inserted header ID


    -- Insert data into the detail table

    OPEN cur;

    read_loop: LOOP

        FETCH cur INTO detailValue;

        IF done THEN

            LEAVE read_loop;

        END IF;

        INSERT INTO detail (header_id, detail_data) VALUES (@lastHeaderID, detailValue);

    END LOOP;

    CLOSE cur;

END $$


DELIMITER ;

 

This stored procedure takes two parameters:


headerData: The data to be inserted into the header table.

detailDataArray: A JSON array containing the data to be inserted into the detail table.

You can call the stored procedure like this:

CALL InsertHeaderAndDetails('Header Data', '["Detail 1", "Detail 2", "Detail 3"]');

This will insert a new row into the header table and multiple rows into the detail table with the corresponding header_id.

Please adjust the data types, table structures, and stored procedure parameters as needed to match your specific requirements. Additionally, ensure that you have proper error handling and validation in your production code for real-world scenarios.



 

 

 

MySQL Menghitung Hari Diantara 2 Tanggal Kecuali Hari Minggu

 

MySQL menghitung 2 tanggal
Untuk demo bisa dilihat di https://www.db-fiddle.com/f/pPnVb5qYKDKK3jYmjJUbJT/0

Jika anda ingin menghitung tanpa hari sabtu dan minggu anda hanya tinggal merubah bagian 7*1 ganti 7*2

Untuk codenya semua saya taruh di github bisa anda lihat disini

Jika masih ada eror/tidak bisa anda bisa komentar/buat issues di git.

MySQL Menghitung Jumlah selisih Tahun Bulan Hari Jam Menit (DATEDIFF)

 

MySQL
MySQL Datediff

Berikut adalah cara menghitung antara 2 tanggal(datetime) menggunakan datediff, anda hanya tinggal perlu copas script dibawah ini dan langsung run di MySQL, hasilnya seperti diatas.

Jika ingin menambahkan fungsi bulan hanya tinggal menambahkan rumus modifikasi yang diambil dari days diatas


Tutorial dan Source Code Aplikasi QR Code PHP & MySQL

 

QR Code
QR Code

Kali ini saya akan share tutorial Create dan Scan QR Code menggunakan PHP dan langsung terhubung dengan database MySQL, saya menggunakan library dari github, berikut adalah library yang saya pakai

Untuk membuat QR Code saya menggunakan https://github.com/t0k4rt/phpqrcode (PHP)

Untuk scan QR Code saya menggunakan https://github.com/ifirdausku/webcodecamjs (Javascript)

Contoh project yang menggunakan keduanya (Source code create dan scan ijasah)

https://github.com/ifirdausku/scan-create-qr-code-php

Silahkan download dulu jika anda ingin mengikuti tutorial ini, jika ingin langsung download source codenya saya sediakan dibawah

Saya asumsikan anda sudah paham HTML, CSS, basic PHP dan Javascript, karena saya menggunakan bootstrap, jquery dalam tutorial ini.

Aplikasi ini HANYA DAPAT BERJALAN PADA HTTPS, jadi jika anda menjalankannya tidak menggunakan HTTPS pada chrome maka akan gagal karena kamera tidak bisa diakses.

Setelah anda download 2 library diatas, jadikan dalam 1 folder (disini saya membuat folder bernama qr) , lalu masukkan dalam htdocs

htdocs
Jadikan dalam 1 folder
Setelah itu copy file di bawah ini, lalu simpan dengan nama index.php

MySQL isi kolom datetime otomatis tanggal sekarang

Cukup menggunakan
current_timestamp()
pada default di MySQL

MySQL Select Datetime Column as Date

Ada banyak cara untuk melakukan select Datetime Column sebagai Date dengan mysql, saya akan membagikan beberapa langkah langkahnya
SELECT * FROM tabel1 WHERE DATE(datetime_field) = '05-11-2018'
datetime_field adalah nama kolom dalam tabel tersebut
format datetime_field bisa menyesuaikan sesuai inputan tanggalnya, bisa DD-MM-YYYY atau YYYY-MM-DD atau bisa dirubah sesuai format tertentu

Cara ini merupakan cara yang paling sederhana namun cara ini memiliki execution time yang lumayan lebih lama daripada cara yang lainnya, jika untuk project sederhana cara ini tidak berpengaruh untuk digunakan, namun jika untuk project yang besar apalagi menggunakan big data maka pengaruhnya akan sangat terlihat signifikan.


Untuk memilih tanggal mundur kebelakang anda bisa menggunakan DATE_SUB atau menambah DATE_ADD

Getting one month ago is easy with a single MySQL function:

SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH);
or
SELECT NOW() - INTERVAL 1 MONTH;
Off the top of my head, I can't think of an elegant way to get the first day of last month in MySQL, but this will certainly work:
SELECT CONCAT(LEFT(NOW() - INTERVAL 1 MONTH,7),'-01');
Put them together and you get a query that solves your problem:
SELECT *
FROM your_table
WHERE t >= CONCAT(LEFT(NOW() - INTERVAL 1 MONTH,7),'-01')
AND t <= NOW() - INTERVAL 1 MONTH


Cara diatas bisa di gunakan untuk memilih sejak tanggal 1 di awal bulan

MySQL Custom Sort Order

Ada banyak cara untuk melakukan sort order dengan mysql, saya akan membagikan beberapa langkah langkahnya

SELECT * FROM tabel1 ORDER BY CASE WHEN kolom = 'URUTANke1' THEN 1 WHEN kolom = 'URUTANke2' THEN 2 WHEN kolom = 'URUTANke3' THEN 3 WHEN kolom = 'URUTANke4' THEN 4 ELSE 5 END ASC

SELECT * FROM tabel1 ORDER BY FIND_IN_SET(namakolom,'URUTANke1,URUTANke2,URUTANke3,URUTANke4,URUTANke5,URUTANke6')

SELECT * FROM tabel1 ORDER BY CONCAT(namakolom)