Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Nieznana kolumna {0} w klauzuli on

Myślę, że Puzzles nie ma kolumny PuzzleID . Czy kolumna nazywa się po prostu ID? w tym stole? Lub Puzzle_ID ?

Powinieneś uruchomić SHOW CREATE TABLE Puzzles aby zobaczyć aktualną definicję tej tabeli.

Czasami przyczyną może być brak cytatu:

... ON `Puzzles.PuzzleID` ...

Powyższe szukałoby kolumny o nazwie dosłownie „Puzzles.PuzzleID ”, czyli nazwa kolumny o długości 16 znaków z kropką pośrodku.

@Bell zasługuje na nagrodę za zauważenie, że mieszasz sprzężenia w stylu przecinków i sprzężenia w stylu SQL-92. Nie zauważyłem tego!

Nie powinieneś używać obu w tym samym zapytaniu, ponieważ pierwszeństwo operacji łączenia prawdopodobnie powoduje zamieszanie.

JOIN słowo kluczowe ma wyższy priorytet. Upraszczając zapytanie, abyśmy mogli przyjrzeć się wyrażeniom tabelowym, byłoby to oceniane w następujący sposób:

SELECT . . . 
FROM (Puzzles JOIN PuzzleCategories),
(Clients JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages)

Problem polega na tym, że dołączenie do PuzzleUsages musi porównać z Puzzles.PuzzleID kolumny, ale ze względu na kwestię pierwszeństwa nie może. Kolumna nie jest częścią operandów ostatniego JOIN .

Możesz użyć nawiasów do rozwiązania błędu, jawnie nadpisując pierwszeństwo wyrażeń tabelowych (tak jak używa się nawiasów w wyrażeniach arytmetycznych):

SELECT . . . 
FROM Puzzles JOIN (PuzzleCategories, Clients)
JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages

Lub możesz po prostu użyć SQL-92 JOIN składnia konsekwentnie. Zgadzam się z @Bell, że jest to bardziej jasne.

SELECT . . . 
FROM Puzzles JOIN PuzzleCategories JOIN Clients
JOIN Publications JOIN PublicationIssues JOIN PuzzleUsages


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL określa dowolną kolejność według identyfikatora

  2. Błąd wstawiania PHP/SQL podczas używania nazwanych symboli zastępczych

  3. Wyjątek w głównym wątku org.hibernate.MappingException:Nieznana jednostka

  4. Konwertuj plik z Cp1252 na utf-8 java

  5. mysql wybrać int jako walutę lub przekonwertować int na format walutowy?