alexa-tracking

Main Content

1024
1024
KASKUS
51
244
https://www.kaskus.co.id/thread/52e8effd118b4691128b45bc/ask-mysql-cara-kerja-not-exists
[ASK] MYSQL cara kerja NOT EXISTS
halo bro minta bantuan ene

misalkan gw punya tabel dengan nama tabel_nota yang isinya tahun_nota

nah pertanyaannya gimana caranya input nota berdasarkan select year dan hasilnya diinput dalam tabel_nota jika data tidak ada

bahasa kasarnya
insert into `tabel_nota` (tahun_nota) values(select year('2014-01-01') AS `temp`) AND
(select `tahun_nota` from `tabel_nota` where NOT EXISTS `tahun_nota`='temp')

maksudnya
input nota berdasarkan select year dan hasil dari select year digunakan untuk input didatabase jika data tidak ada dalam 1 perintah SQL

insert into `tabel_nota` (tahun_nota)
(select `tahun_nota` from `tabel_nota` where `tahun_nota` not in ('01-27-2014'))

Gini maksudnya ?
Quote:Original Posted By ptrabgus

insert into `tabel_nota` (tahun_nota)
(select `tahun_nota` from `tabel_nota` where `tahun_nota` not in ('01-27-2014'))

Gini maksudnya ?


salah bro
yg gw maksud mendapatkan tahun nota dari 2014-01-01 dan hasil dari tahun nota tersebut di insert kedalam database pake not exists

kalo perintahnya om muncul error duplicate primary key
sundul gan bantu dong penting
Code:

INSERT IGNORE INTO tabel_nota (tahun_nota)
VALUES ('2014')


emoticon-Blue Guy Cendol (L)
Kayaknya nda bisa deh gan kl dgn 1 perintah SQL. Soalnya sblm insert, hrs cari tahu apa datanya sdh ada / blm. cmiiw
Kurang ngerti gan ... coba berikan contoh datanya kayak apa dan yang diinginkan seperti apa?
Quote:Original Posted By Echizen.Ryoma
Kayaknya nda bisa deh gan kl dgn 1 perintah SQL. Soalnya sblm insert, hrs cari tahu apa datanya sdh ada / blm. cmiiw


Quote:Original Posted By peyotpetot
Kurang ngerti gan ... coba berikan contoh datanya kayak apa dan yang diinginkan seperti apa?


gw udah jelaskan pada awal

maksudnya begini
saya punya tabel dengan nama tabel_tahun yang isinya tahun_nota

nah pertanyaannya gimana caranya input tahun nota berdasarkan select year(tahun)

gw udah sampai
INSERT INTO `tabel_tahun`(`TAHUN_NOTA`) (select year(now()))
tetapi muncul pesan error
Duplicate entry '2014' for key 'PRIMARY'

nah gimana caranya menggabungkan pakai perintah where not exists supaya tidak muncul pesan error
Quote:Original Posted By -sony-
halo bro minta bantuan ene

misalkan gw punya tabel dengan nama tabel_nota yang isinya tahun_nota

nah pertanyaannya gimana caranya input nota berdasarkan select year dan hasilnya diinput dalam tabel_nota jika data tidak ada

bahasa kasarnya
insert into `tabel_nota` (tahun_nota) values(select year('2014-01-01') AS `temp`) AND
(select `tahun_nota` from `tabel_nota` where NOT EXISTS `tahun_nota`='temp')

maksudnya
input nota berdasarkan select year dan hasil dari select year digunakan untuk input didatabase jika data tidak ada dalam 1 perintah SQL


ane coba bantu sedikit gan emoticon-Big Grin
cara kerja NOT EXISTS itu sebenernya kaya join 2 tabel gitu gan emoticon-Big Grin
jadi dia akan mencari data pada tabel A yang tidak ada pada tabel B

contoh :
Code:

SELECT empl_name FROM employees emp
WHERE NOT EXISTS ( SELECT 1 FROM user usr WHERE usr.empl_code = emp.empl_code )


query diatas bisa diartikan mencari karyawan mana saja sih yang belum terdaftar di tabel user

kalo untuk kasus agan agak rumit ya, karena agan mau input ke tabel yang sama dengan kondisi yang di tabel itu ga ada datanya @@
dan agan cuma gambarin di tabel_nota cuma ada 1 kolom yaitu tahun_nota
coba deh agan lebih perluas lagi biar lebih mudah dipecahin emoticon-Big Grin

atau tinggal dirubah aja itu NOT EXISTS yang agan bikin jadi sub query jangan hanya tahun_nota = temp emoticon-Smilie

emoticon-I Love Indonesia (S) emoticon-I Love Indonesia (S)
Quote:Original Posted By Mastela


ane coba bantu sedikit gan emoticon-Big Grin
cara kerja NOT EXISTS itu sebenernya kaya join 2 tabel gitu gan emoticon-Big Grin
jadi dia akan mencari data pada tabel A yang tidak ada pada tabel B

contoh :
Code:

SELECT empl_name FROM employees emp
WHERE NOT EXISTS ( SELECT 1 FROM user usr WHERE usr.empl_code = emp.empl_code )


query diatas bisa diartikan mencari karyawan mana saja sih yang belum terdaftar di tabel user

kalo untuk kasus agan agak rumit ya, karena agan mau input ke tabel yang sama dengan kondisi yang di tabel itu ga ada datanya @@
dan agan cuma gambarin di tabel_nota cuma ada 1 kolom yaitu tahun_nota
coba deh agan lebih perluas lagi biar lebih mudah dipecahin emoticon-Big Grin

atau tinggal dirubah aja itu NOT EXISTS yang agan bikin jadi sub query jangan hanya tahun_nota = temp emoticon-Smilie

emoticon-I Love Indonesia (S) emoticon-I Love Indonesia (S)

memang yang mau diinput hanya kolom tahun_nota saja

jadi ga bs yah dalam 1 perintah ?

Kl sepengetahuan ane sih nda bisa dlm 1 perintah gan, karena ya itu td sblm insert hrs cek dl apa datanya sdh ada / blm. Kan di perintah INSERT tdk bisa dikasih kondisi WHERE.
Quote:Original Posted By Echizen.Ryoma
Kl sepengetahuan ane sih nda bisa dlm 1 perintah gan, karena ya itu td sblm insert hrs cek dl apa datanya sdh ada / blm. Kan di perintah INSERT tdk bisa dikasih kondisi WHERE.


ok gan thx infonya
jadi insert ga boleh pakai where yah ? tapi bisa tidak digabungkan dengan select ?
maksudnya di select dulu tahun_nota ada tidak data yang sama, kalo tidak ada yah lakukan insert data
Quote:Original Posted By -sony-


ok gan thx infonya
jadi insert ga boleh pakai where yah ? tapi bisa tidak digabungkan dengan select ?
maksudnya di select dulu tahun_nota ada tidak data yang sama, kalo tidak ada yah lakukan insert data


setau ane sih gan, INSERT memang ga pernah ada WHERE nya
tapi kalau agan cara insertnya dengan melakukan SELECT dari tabel lain ya yang pake WHERE nya kan pas di bagian SELECT bukan di INSERT nya

maksud ane coba agan jabarin dulu, tabel yang ada apa aja lalu apa masing2 tabel yang berkaitan ada relasinya atau nda
nah baru deh dijelaskan mau insert ke tabel mana dengan kondisi seperti apa di tabel tabel lain

ya kalau misal agan mau nambahin di tabel_tahun dengan data YEAR yang ada di tahun 2014 bisa aja gan

contoh :
Code:

INSERT INTO tabel_tahun (tahun_nota)
SELECT tahun_nota FROM tabel_nota a
WHERE NOT EXISTS (SELECT 1 FROM tabel_tahun b WHERE b.tahun_nota = a.tahun_nota)

kode di atas itu maksudnya melakukan INSERT ke tabel_tahun yang datanya diambil dari tabel_nota dan belum ada di tabel_tahun


Coba gunakan built-in 'dual' table untuk kebutuhan ini.
hanya di test pada mysql versi 5.6.11
Code:

INSERT INTO
table_nota (tahun_nota)
SELECT
YEAR('2014-01-01') AS tahun_nota
FROM
dual
WHERE
NOT EXISTS
(
SELECT
t.tahun_nota
FROM
table_nota AS t
WHERE
tahun_nota = 2014
);