Добрый вечер, столкнулся с очередной задачей с запросом sql, который я решил усложнить и у меня все сломалось. Использую Postgresql, но значения я думаю это не имеет.
У меня был следующий запрос, где "car" содержала client_id столбик таблицы "client":
SELECT
client.someone_field,
car.*
FROM car
INNER JOIN client ON client.id = car.client_id
WHERE 1=1 ';
Запрос простой, возвращает данные из связанной по id данные из второй таблицы.
Но нужно сделать ещё одну привязку с той же второй таблицей (client), но уже через связывающую таблицу, я прикинул это так:
SELECT
client.someone_field, // данные от первой связки
client_second.someone_field // данные от второй связки
car.*
FROM car
INNER JOIN client ON client.id = car.client_id
INNER JOIN client_car ON client_car.car_id = car.id // связывающая таблица которая имеет id одного поля и id другого поля (один к одному)
INNER JOIN client client_second ON client_second.id = client_car.client_id // тут пытаюсь взять ID с противоположного столбика у связывающей таблицей и сравнить с таблицей client
WHERE 1=1 ';
Собственно, кто осилил, такой запрос ничего не возвращает. Если это перевести в логику, то первый join это получаем владельца текущего "car", следующие 2 JOIN подразумевались для получения уже того кто управляет текущим "car".