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

Mencampur ANSI 1992 JOIN dan COMMA dalam kueri

Menurut tautan ini , Anda tidak boleh mencampuradukkan kedua notasi saat membangun gabungan. Koma yang Anda gunakan untuk bergabung dengan memebers as m, telephone as t , dan panggilan berikutnya ke inner join , memicu kesalahan kolom tidak dikenal.

Untuk mengatasinya, gunakan CROSS/INNER/LEFT JOIN bukannya koma.

Sebelumnya, operator koma (,) dan JOIN keduanya memiliki prioritas yang sama, sehingga ekspresi join t1, t2 JOIN t3 diinterpretasikan sebagai((t1, t2) JOIN t3). Sekarang JOIN memiliki prioritas yang lebih tinggi, sehingga ekspresi diinterpretasikan sebagai (t1, (t2 JOIN t3)). Perubahan ini memengaruhi pernyataan yang menggunakan klausa ON, karena klausa tersebut hanya dapat merujuk ke kolom dalam operan gabungan, dan perubahan prioritas mengubah interpretasi operan tersebut.

Untuk tujuan pedagogis, saya menambahkan kueri karena, menurut saya, seharusnya:

SELECT m.*, t.*
FROM memebers as m 
    JOIN telephone as t
    JOIN memeberFunctions as mf ON m.id = mf.memeber AND mf.function = 32
    JOIN mitgliedTelephone as mt ON m.id = mt.memeber

Karena Anda tidak bergabung dengan t dan m , hasil akhirnya adalah produk kartesius; Anda mungkin ingin direvisi.

Semoga membantu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lima aplikasi perangkat lunak teratas untuk mengakses server MySQL/MariaDB

  2. Penyimpanan alamat IP dalam database MySQL menggunakan PHP

  3. Kesalahan MySQL 1064 sintaks tetapi semuanya tampak baik-baik saja

  4. Docker:Menggabungkan beberapa gambar

  5. Sisipan Bersyarat MySQL