Our social:

Latest Post

Tampilkan postingan dengan label Materi Kuliah. Tampilkan semua postingan
Tampilkan postingan dengan label Materi Kuliah. Tampilkan semua postingan

Rabu, 25 Juni 2014

Subquery Syntax

Dimulai dengan MySQL 4.1, semua bentuk subquery dan operasi yang standar SQL membutuhkan didukung, serta beberapa fitur yang MySQL-spesifik.
Berikut adalah contoh dari subquery:
 SELECT * FROM t1 MANA column1 = (SELECT column1 FROM t2);
Dalam contoh ini, SELECT * FROM t1 ... adalah permintaan luar (atau pernyataan luar), dan (SELECT column1 FROM t2) adalah subquery. Kita mengatakan bahwa subquery bersarang dalam permintaan luar, dan pada kenyataannya adalah mungkin untuk subqueries sarang dalam subqueries lain, dengan kedalaman yang cukup. Sebuah subquery harus selalu muncul dalam tanda kurung.
Keuntungan utama dari subqueries adalah:
  • Mereka memungkinkan query yang terstruktur sehingga dimungkinkan untuk mengisolasi setiap bagian dari sebuah pernyataan.
  • Mereka menyediakan cara alternatif untuk melakukan operasi yang tidak akan membutuhkan kompleks bergabung dan serikat pekerja.
  • Banyak orang menemukan subqueries lebih mudah dibaca daripada kompleks bergabung atau serikat pekerja. Memang, itu adalah inovasi subqueries yang memberi orang gagasan asli memanggil SQL awal "Structured Query Language."
Berikut ini adalah pernyataan contoh yang menunjukkan poin utama tentang sintaks subquery seperti yang ditetapkan oleh standar SQL dan didukung di MySQL:
 
DELETE FROM t1
WHERE s11 > ANY
 (SELECT COUNT(*) /* no hint */ FROM t2
  WHERE NOT EXISTS
   (SELECT * FROM t3
    WHERE ROW(5*t2.s1,77)=
     (SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM
      (SELECT * FROM t5) AS t5)));
 
Sebuah subquery dapat kembali skalar (nilai tunggal), satu baris, satu kolom, atau meja (satu atau lebih baris dari satu atau lebih kolom). Ini disebut subqueries skalar, kolom, baris, dan meja. Subqueries yang kembali jenis tertentu hasil sering dapat digunakan hanya dalam konteks tertentu, seperti yang dijelaskan dalam bagian berikut.
Ada beberapa pembatasan pada jenis laporan yang subqueries dapat digunakan. Sebuah subquery dapat berisi banyak kata kunci atau klausul bahwa biasa SELECT dapat berisi: DISTINCT , GROUP BY , ORDER BY , LIMIT , bergabung, petunjuk indeks, UNION konstruksi, komentar, fungsi, dan sebagainya.
Pernyataan luar A subquery bisa menjadi salah satu dari: SELECT , INSERT , UPDATE , DELETE , SET , atau DO .
Di MySQL, Anda tidak dapat mengubah meja dan pilih dari tabel yang sama dalam suatu subquery. Hal ini berlaku untuk pernyataan seperti DELETE , INSERT , REPLACE , UPDATE , dan (karena subqueries dapat digunakan dalam SET klausul) LOAD DATA INFILE .
Untuk informasi tentang bagaimana optimizer menangani subqueries, lihat Bagian 8.3.1.14, "Mengoptimalkan Subqueries dengan EXISTS Strategy " . Untuk diskusi tentang pembatasan penggunaan subquery, termasuk masalah kinerja untuk bentuk-bentuk tertentu dari sintaks subquery, lihat Bagian D.3, "Pembatasan Subqueries" .

sumber 

T-SQL : Cara Lain Untuk INNER JOIN Table Tanpa Menggunakan Kata INNER JOIN

Hi,,, saya akan memberitahu suatu cara unik untuk melakukan INNER JOIN Table tanpa harus menggunakan kata kata INNER JOIN, penasaran ? atau ada yang sudah tahu caranya ? ok sebelumnya saya sudah kupas tuntas tentang INNER JOIN DISINI. Cara lain yang saya maksud adalah :
SELECT A.KODE_BARANG, A.NAMA_BARANG, A.KODE_GROUP, B.NAMA_GROUP, A.KODE_SUPPLIER, C.NAMA_SUPPLIER
FROM BARANG AS A,GROUP_BARANG AS B, SUPPLIER_BARANG AS C
WHERE A.KODE_GROUP = B.KODE_GROUP AND A.KODE_SUPPLIER=C.KODE_SUPPLIER

Jadi intinya, INNER JOIN cukup diganti dengan koma dan ON nya diganti dengan WHERE. Secara teori adalah seperti ini :
SELECT A.*, B.*, C.*, D.* FROM
TABLE1 AS A, TABLE2 AS B, TABLE3 AS C, TABLE4 AS D
WHERE A.KODE=B.KODE AND A.KODE2=C.KODE2 AND A.KODE3=D.KODE3
Ini sama dengan :
SELECT A.*, B.*, C.*, D.* FROM
TABLE1 AS A INNER JOIN TABLE2 AS B ON A.KODE=B.KODE
INNER JOIN TABLE3 AS C ON A.KODE2=C.KODE2
INNER JOIN TABLE4 AS D ON A.KODE3=D.KODE3

Ini hanya berlaku pada INNER JOIN dan CROSS JOIN saja, tidak bisa untuk RIGHT / LEFT JOIN, Selamat mencoba !

sumber