У меня следующий запрос, который я выполняю, чтобы показать эти записи в представлении Laravel.
$companies = DB::select(DB::raw("SELECT (
SELECT f.name FROM fields f WHERE f.id = (
SELECT fc.field_id FROM c_f fc WHERE fc.company_id = c.id
)
)field, c.name, c.email, (
SELECT name as country FROM countries WHERE id = (SELECT country_id from states WHERE id = (SELECT state_id from cities WHERE id = (SELECT city_id from addresses WHERE id = c.address_id)))
)country,
(
SELECT name as state_name FROM states WHERE id = (SELECT state_id from cities WHERE id = (SELECT city_id from addresses WHERE id = c.address_id))
)states, (
SELECT name as city FROM cities WHERE id = (SELECT city_id from addresses WHERE id = c.address_id)
)city
FROM companies c WHERE c.user_id = 1"));
У меня проблемы с этой строкой
SELECT name as city FROM cities WHERE id = (SELECT city_id from addresses WHERE id = c.address_id)
Поскольку в моей базе данных есть много городов с одинаковыми именами, поэтому выдается ошибка (вероятно, то же самое относится и к штатам, но в этом случае ошибка выдается в городах, поэтому я попытался добавить LIMIT 1 в конце подзапрос, но он выдаёт мне ошибку, поэтому я думаю, что я не могу использовать LIMIT в подзапросе?
Это то, что я пытался изменить
SELECT name as city FROM cities WHERE id = (SELECT city_id from addresses WHERE id = c.address_id LIMIT 1)
Вот так выглядят таблицы
компании
адреса
города
состояний
страны
Как это можно исправить?