Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Bagaimana cara Subquery dalam pernyataan pilih bekerja di Oracle?

Sederhana saja-

SELECT empname,
       empid,
       (SELECT COUNT (profileid)
          FROM profile
         WHERE profile.empid = employee.empid)
           AS number_of_profiles
  FROM employee;

Lebih mudah lagi jika Anda menggunakan table join seperti ini:

  SELECT e.empname, e.empid, COUNT (p.profileid) AS number_of_profiles
    FROM employee e LEFT JOIN profile p ON e.empid = p.empid
GROUP BY e.empname, e.empid;

Penjelasan untuk subkueri:

Pada dasarnya, subquery dalam select mendapat nilai skalar dan meneruskannya ke kueri utama. Sebuah subquery di select tidak diperbolehkan melewati lebih dari satu baris dan lebih dari satu kolom, yang merupakan batasan. Di sini, kami melewati count ke kueri utama, yang, seperti yang kita ketahui, akan selalu hanya berupa angka- nilai skalar. Jika nilai tidak ditemukan, subquery mengembalikan null ke pertanyaan utama. Selain itu, subquery dapat mengakses kolom dari from klausa kueri utama, seperti yang ditunjukkan dalam kueri saya di mana employee.empid diteruskan dari kueri luar ke kueri dalam.

Sunting :

Saat Anda menggunakan subquery dalam select klausa, Oracle pada dasarnya memperlakukannya sebagai gabungan kiri (Anda dapat melihat ini dalam rencana penjelasan untuk kueri Anda), dengan kardinalitas baris menjadi hanya satu di kanan untuk setiap baris di kiri.

Penjelasan untuk gabungan kiri

Gabung kiri sangat berguna, terutama ketika Anda ingin mengganti select subquery karena pembatasannya. Tidak ada batasan di sini pada jumlah baris tabel di kedua sisi LEFT JOIN kata kunci.

Untuk informasi lebih lanjut, baca Oracle Docs tentang subquery dan left join atau left outer join.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menghubungkan ke Oracle Database melalui C#?

  2. koneksi oci_connect gagal

  3. Situs Web Turun dan Umpan Twitter

  4. Menemukan baris yang tidak berisi data numerik di Oracle

  5. Oracle REGEXP_LIKE dan batasan kata