Написать запрос sql

Привет всем продолжаю разбираться c sql/django. Имеется демонстрационная база данных postgresql 10. Идея: с помощью джанго разработать поиск по бд по имени фамилии (passenger_name) пассажира используя django orm

Написать запрос sql

У меня не получается придумать этот алгоритм/ queryset чтобы по одному полю одной таблицы найди значения в другой таблицы по внешним ключам и связям. Ребят накидайте че почитать статьи, книги. Ну или какие методы использовать

105105 открытий
8 комментариев

ну и зачем тебе тут что-то сложнее классического SQL? если нет доступа к базе, а есть только картинка, но хочешь поэкспериментировать и лень разворачивать сервер с бд у себя - http://sqlfiddle.com/ в помощь

select
da.city as dep_city,
aa.city as arr_city
from
tickets t
join ticket_flights tf on t.ticket_no=tf.ticket_no
join flights f on f.flight_id=tf.flight_id
join airports da on f.departure_airport=da.airport_code
join airport aa on f.arrival_airport=aa.airport_code
where t.passenger_name='username'

лять, веткой промазал, ну да ладно

Ответить

О спасибо
А вот если допусти в том же запросе надо вывести ещё поле city из таблицы airports
Ведь departure_airport и arrival_airport свой city (тоесть надо продублировать поле ) , знаю только то что он ссылается по внешнему ключу airports.airport_code
Как это лучше всего сделать ?

Ответить

Если речь про чистый SQL, то ты можешь объединить таблицы через JOIN, и после этого уже делать выборку.

Ответить

У меня была такая мысль но мне кажется это слишком легко, ну и в добавок не оптимизировано будет

Ответить

а можно требования нормальные? Что есть на входе, что хочешь получить на выходе хотя бы? примерчиков пару. А то если просто по фамилии получить все что можно в статичной базе, то как выше посоветовали - это чистый SQL, пиши джойн и не парься. Если же ты хочешь передать на вход имя таблицы А, имя таблицы Б, поле для поиска в таблице А, значение поля в таблице А, искомое поле в таблице Б и по этому набору получить значение поля в таблице Б, то это уже совсем другая тема (хотя я бы все равно просто накидал пачку запросов и в зависимости от таблиц А/Б разные скрипты просто брал SQLные, при появлении новых таблиц - докидывал новые скрипты)

Ответить

Ну вот допустим в таблице билеты (tickets )есть поле passenger_name нужно достать из таблицы полеты(flights) поля departure_airport и arrival_airport а из таблицы аэропорты достать поле city

Ответить