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
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 tableIF EXISTS (SELECT * FROM your_table WHERE header_column = p_header_value) THEN-- Update the existing recordUPDATE your_table SET detail_column = p_detail_value WHERE header_column = p_header_value;ELSE-- Insert a new recordINSERT INTO your_table (header_column, detail_column) VALUES (p_header_value, p_detail_value);END IF;END //DELIMITER ;
CALL insert_update_table('Header Value', 'Detail Value');
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"]');
MySQL Menghitung Hari Diantara 2 Tanggal Kecuali Hari Minggu
Untuk demo bisa dilihat di https://www.db-fiddle.com/f/pPnVb5qYKDKK3jYmjJUbJT/0
MySQL Menghitung Jumlah selisih Tahun Bulan Hari Jam Menit (DATEDIFF)
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 |
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
Jadikan dalam 1 folder |
MySQL isi kolom datetime otomatis tanggal sekarang
current_timestamp()pada default di MySQL
MySQL Select Datetime Column as Date
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
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)