Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Mengonversi Aljabar Relasional ke SQL Query yang sesuai

Ada beberapa cara untuk melihat ini. Opsi pertama mungkin lebih mudah jika Anda lebih mengenal database daripada aljabar relasional, sedangkan opsi kedua akan lebih mudah (dan lebih akurat untuk masalah yang lebih kompleks) jika Anda terbiasa dengan aljabar relasional.

Tabel Pertama:

Mulailah dengan mencari tahu gabungan Anda. Anda tahu bahwa Anda memiliki tiga set (tabel) Guest , Reservation , dan Room , ketiganya menyatu secara alami (inner join). Jadi Anda bisa mulai menulis kueri Anda seperti ini:

SELECT *
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_
    INNER JOIN Room r
        ON res._roomId_ = r._roomId_;

Setelah selesai, terapkan ketentuan Anda:

SELECT *
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_
    INNER JOIN Room r
        ON res._roomId_ = r._roomId_
WHERE g.age < 20;

Atau Anda dapat memberikan kondisi untuk g.age di gabung ke Reservation , tetapi disarankan untuk menempatkan kondisi di WHERE klausa untuk INNER JOIN .

Terakhir, Anda mengisi SELECT :

SELECT g._guestId_,
    res._roomId_,
    r.price
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_
    INNER JOIN Room r
        ON res._roomId_ = r._roomId_
WHERE g.age < 20;

Urutan operasi

Untuk ini, Anda menulis kueri Anda menggunakan urutan operasi. Jadi semua yang ada di dalam tanda kurung akan dieksekusi terlebih dahulu. Melakukannya dengan cara ini, Anda mulai dengan menulis kueri terhadap Guest :

SELECT g._guestId_
FROM Guest g
WHERE g.age < 20;

Set berikutnya adalah Reservation , dan itu wajar bergabung:

SELECT g._guestId_,
    res._roomId_
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_;

Akhirnya, Anda datang ke Room set, lagi-lagi bergabung secara alami:

SELECT g._guestId_,
    res._roomId_,
    r.price
FROM Guest g
    INNER JOIN Reservation res
        ON g._guestId_ = res._guestId_
    INNER JOIN Room r
        ON res._roomId_ = r._roomId_
WHERE g.age < 20;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan apakah daftar/set terkandung dalam daftar lain

  2. PHP mengonversi datetime ke detik

  3. Apa artinya melarikan diri dari string?

  4. Cara mengimpor file XML ke tabel database MySQL menggunakan XML_LOAD(); fungsi

  5. Kesalahan:R tidak dapat terhubung ke MySQL