Соединение в одну таблицу дважды с разными значениями - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь заменить значения «Transfer.pickup_areas_group_id» и «Transfer.Red_areas_group_id» значениями из таблицы «area_group», используя идентификаторы

Я использую этот запрос:

SELECT 
transfers.id AS transfer_id, 
transfers.name AS transfer_name,  
transfers.pickup_areas_group_id AS transfer_pickup_areas_group_id,
transfers.drop_areas_group_id AS transfer_drop_areas_group_id, 
transfers_pricing.vehicle_id AS vehicle_id, 
transfers_pricing.date_start AS date_start, 
transfers_pricing.date_end AS date_end, 
transfers_pricing.price AS price 
FROM transfers
INNER JOIN transfers_pricing ON transfers_pricing.transfer_id = transfers.id

Я попытался использовать дополнительное INNER JOIN для замены первого значения «Transfer.pickup_areas_group_id», но не смог найти способ заменить второе значение «Transfer.drop_areas_group_id»

Я пытался этот запрос:

SELECT 
transfers.id AS transfer_id, 
transfers.name AS transfer_name,  
transfers.pickup_areas_group_id AS transfer_pickup_areas_group_id,
areas_group.area_id AS pickup_area_ids,
transfers.drop_areas_group_id AS transfer_drop_areas_group_id, 
transfers_pricing.vehicle_id AS vehicle_id, 
transfers_pricing.date_start AS date_start, 
transfers_pricing.date_end AS date_end, 
transfers_pricing.price AS price 
FROM transfers
INNER JOIN transfers_pricing ON transfers_pricing.transfer_id = transfers.id
INNER JOIN areas_group ON areas_group.id = transfers.pickup_areas_group_id

Спасибо,

1 Ответ

1 голос
/ 15 апреля 2020

По сути, вам нужно еще одно соединение на areas_group; для устранения неоднозначности двух ссылок на одну и ту же таблицу необходимо использовать псевдоним таблицы.

На самом деле, рекомендуется использовать псевдонимы таблиц для всех таблиц, которые вступают в игру в запросе: это делает запрос короче для чтения и записи.

SELECT 
    t.id AS transfer_id, 
    t.name AS transfer_name,  
    t.pickup_areas_group_id AS transfer_pickup_areas_group_id,
    ag1.area_id AS pickup_area_ids,
    t.drop_areas_group_id AS transfer_drop_areas_group_id, 
    ag2.area_id AS drop_area_ids
    tp.vehicle_id AS vehicle_id, 
    tp.date_start AS date_start, 
    tp.date_end AS date_end, 
    tp.price AS price 
FROM transfers t
INNER JOIN transfers_pricing tp ON tp.transfer_id = t.id
INNER JOIN areas_group ag1 ON ag1.id = t.pickup_areas_group_id
INNER JOIN areas_group ag2 ON ag2.id = t.drop_areas_group_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...