Saya kira Puzzles
tidak memiliki kolom PuzzleID
. Apakah kolom ini disebut hanya ID
di meja itu? Atau Puzzle_ID
?
Anda harus menjalankan SHOW CREATE TABLE Puzzles
untuk melihat definisi tabel saat ini.
Terkadang kutipan yang hilang bisa menjadi penyebabnya:
... ON `Puzzles.PuzzleID` ...
Di atas akan mencari kolom yang secara harfiah bernama "Puzzles.PuzzleID
," yaitu, nama kolom yang panjangnya 16 karakter dengan titik di tengahnya.
@Bell pantas mendapatkan hadiah karena memperhatikan bahwa Anda mencampur gabungan gaya koma dan gabungan gaya SQL-92. Saya tidak menyadarinya!
Anda tidak boleh menggunakan keduanya dalam kueri yang sama, karena prioritas operasi gabungan mungkin menyebabkan kebingungan.
JOIN
kata kunci memiliki prioritas yang lebih tinggi. Menyederhanakan kueri Anda sehingga kami dapat melihat ekspresi tabel, itu akan dievaluasi sebagai berikut:
SELECT . . .
FROM (Puzzles JOIN PuzzleCategories),
(Clients JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages)
Masalahnya adalah bergabung dengan PuzzleUsages
perlu dibandingkan dengan Puzzles.PuzzleID
kolom, tetapi karena masalah prioritas, tidak bisa. Kolom bukan bagian dari operan JOIN
terakhir .
Anda dapat menggunakan tanda kurung untuk mengatasi kesalahan, secara eksplisit mengesampingkan prioritas ekspresi tabel (sama seperti Anda akan menggunakan tanda kurung dalam ekspresi aritmatika):
SELECT . . .
FROM Puzzles JOIN (PuzzleCategories, Clients)
JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages
Atau Anda bisa menggunakan SQL-92 JOIN
sintaks secara konsisten. Saya setuju dengan @Bell bahwa ini lebih jelas.
SELECT . . .
FROM Puzzles JOIN PuzzleCategories JOIN Clients
JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages