SQL-выбор из невыделенных таблиц, а также связанных таблиц

Я получаю сообщение об ошибке (#1054 - Unknown column 'post.make_id' in 'on clause') со следующим запросом:

SELECT `post`.* 
FROM `post`, 
`city` `postCity`
LEFT JOIN `make` ON `post`.`make_id` = `make`.`id` 

Если я удалю city` `postCity, ошибок не будет. Могу ли я запросить таблицу city, даже если она не связана с таблицей post, и в то же время соединить левую часть с другими таблицами?

Что такое postCity? Колонка?

Alfabravo 12.04.2018 15:47

Не смешивайте неявные (разделенные запятыми) объединения и явные объединения.

jarlh 12.04.2018 15:49

LEFT JOIN оценивается перед неявным соединением. Состояние ON не имеет доступа к таблице сообщений.

jarlh 12.04.2018 15:50

Добавьте образец данных таблицы и ожидаемый результат. (Как форматированный текст, а не изображения.)

jarlh 12.04.2018 15:52
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
1
4
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Думаю, ваша проблема в смешивании запятых с правильным синтаксисом JOIN.

Это делает то, что вы хотите?

SELECT p.* 
FROM post p CROSS JOIN
     city c LEFT JOIN
     make m
     ON p.make_id = m.id;

Я не уверен, чего вы пытаетесь достичь. Это не выглядит особенно полезным, но может исправить вашу синтаксическую ошибку.

Большое спасибо! Я пытаюсь вычислить расстояние между создателем сообщения и вошедшим в систему пользователем, используя широту и долготу города.

Benoît 12.04.2018 16:37

Другие вопросы по теме