2016-11-05 2 views
-1

Я новичок в SQL. У меня есть две таблицы, CarDesc и CarCost. Таблица CarDesc Таблица отображает совокупность запросов. Я пытаюсь выбрать CAR_DESC колонку where ID In List(1,2,3), а затем присоединиться на ID к CarCost таблице столбец, для 2D стоимость и колонку для 4D стоимость.SQL выбрать тот же столбец с другим, где, а затем присоединиться и добавить к внешнему запросу

CarDesc

ID CAR_DESC COUNTRY 
1 Toyota Japan 
2 Honda  Japan 
3 Kia  Korea 
4 Jeep  USA 
5 Ford  USA 

CarCost

ID TYPE COST 
1 2D  3000 
1 4D  2700 
2 2D  4000 
2 4D  5500 
3 2D  3200 
3 4D  5000 

Это ожидаемый результат, я пытаюсь получить: один отчетливый запись для каждого описания автомобиля, а затем колонна для 2D-стоимость и Затем колонна для 4D стоимость

CAR_DESC 2D_COST 4D_COST 
Toyota 3000  2700 
Honda 4000  5500 
Kia  3200  5000 

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

SELECT DESC 
FROM CarDesc 
WHERE ID IN LIST (1,2,3) 
LEFT JOIN (SELECT COST AS 2D_COST 
      WHERE TYPE = 2D) 
    ON CarDesc.ID = CarCost.ID 
LEFT JOIN (SELECT COST AS 4D_COST 
      WHERE TYPE = 4D) 
    ON CarDesc.ID = CarCost.ID 

ответ

1

Запрос будет будет выглядеть примерно так:

SELECT cd.*, cc2.cost as cost_2d, cc4.cost as cost_4d 
FROM CarDesc cd LEFT JOIN 
    CarCost cc2 
    ON cd.Id = cc2.id AND cc2.TYPE = '2D' LEFT JOIN 
    CarCost cc4 
    ON cd.Id = cc4.id AND cc4.TYPE = '4D' 
WHERE cd.ID IN (1, 2, 3); 

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

+0

Спасибо, Гордон. Это отлично сработало после добавления псевдонима таблицы до TYPE. Это, вероятно, просто для вас, но вы серьезно спасли мне много времени и головной боли. Очень признателен. Хорошего дня! – steveW

0
SELECT cd.ID , 
sum(case when cc.type='2D' then cc.cost else 0 end) 2D_COST, 
sum(case when cc.type='4D' then cc.cost else 0 end) 4D_COST 
FROM CarDesc cd LEFT JOIN CarCost cc ON cd.Id = cc.id 
WHERE cd.ID IN (1, 2, 3) 
group by cd.ID