Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL неизвестна колона в клауза ON

Не смесвайте съединения в стил ANSI-89 и ANSI-92. Те имат различно предимство, което може да доведе до объркващи грешки и това се случи тук. Вашето запитване се тълкува по следния начин:

FROM property p, (
    propertygeometry pg
    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216
    ...
)

В горното, съединенията, използващи ключовата дума JOIN, се оценяват първо, преди дори да се разгледа присъединяването в стил запетая. В този момент таблицата p все още не е деклариран.

От MySQL ръководство :

Въпреки това, приоритетът на оператора запетая е по-малък от този на INNER JOIN, CROSS JOIN, LEFT JOIN и т.н. Ако смесите съединения със запетая с другите типове присъединяване, когато има условие за присъединяване, грешка от формата Неизвестна колона 'col_name' в 'on clause' може да възникне. Информация за справянето с този проблем е дадена по-късно в този раздел.

Бих препоръчал винаги използвайки присъединяване в стил ANSI-92, т.е. с помощта на ключовата дума JOIN:

SELECT p.*,
    IF(COUNT(ms.PropertyID) > 0,1,0) AS Contacted,
    pm.MediaID,
    date_format(p.AvailableFrom, '%d %b %Y') AS 'AvailableFrom',
    astext(pg.Geometry) AS Geometry
FROM property p
    JOIN propertygeometry pg ON p.PropertyGeometryID = pg.id
    JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216
    LEFT JOIN message ms ON ms.PropertyID = p.id AND ms.SenderID = 384216
    LEFT JOIN property_media pm ON pm.PropertyID = p.id AND pm.IsPrimary = 1
WHERE p.paused = 0
GROUP BY p.id

Свързано:



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да настроите асинхронна репликация от Galera Cluster към самостоятелен MySQL сървър с GTID

  2. База данни по подразбиране на MySQL

  3. UTC_TIMESTAMP() Примери – MySQL

  4. Какво е MySQL? – Въведение в системите за управление на бази данни

  5. Разбиране на HAProxy статистиката за MySQL и PostgreSQL