HARD&SOFT > Программирование
Вопрос по SQL, начинающего уровня
benassi:
Приветствую) Уважаемые однофорумчане знающие SQL , прошу вашей помощи!
Начал по-тихоньку осваивать SQL в свободное время (сильно не судить :police:) и вот застрял на каком вопросе, кто знает помогите разобраться. Заранее благодарен.
Схема БД состоит из четырех таблиц:
Product(maker, model, type)
PC(code, model, speed, ram, hd, cd, price)
Laptop(code, model, speed, ram, hd, price, screen)
Printer(code, model, color, type, price)
Нужно вывести модели(model) и цены(price) от производителя(maker) 'B'
Пишу для этого следующий запрос:
SELECT DISTINCT Product.model,PC.price AS Cena_PC,Laptop.price AS Cena_LP, Printer.price AS Cena_PR FROM Product
FULL OUTER JOIN PC ON PC.model = Product.model
FULL OUTER JOIN Laptop ON Laptop.model = Product.model
FULL OUTER JOIN Printer ON Printer.model = Product.model
WHERE maker='B'
Выводит он информацию:
Вот мне нужно получить такой вид:
Подскажите, как поступить?
ANALGIN2:
Честно признаюсь, что sql даже не щупал ни разу, поэтому не уверен, что это возможно сделать его (её?) средствами. А вот простенькую предобработку на php - легко. Берутся все значения из Cena_* и если значение не равно Null , записывается в Cena (конечно, при условии, что неNull только одно в строке model).
I-one:
тоже не силен в sql, но на mysql ставил бы умолчания поля не Null и именно 0. и тогда можно SELECT (`cena_pc`+`cena_lp`+`cena_pr`) AS `cena`
benassi:
--- Цитата: I-one от 25 Февраля 2015, 22:51:08 ---тоже не силен в sql, но на mysql ставил бы умолчания поля не Null и именно 0. и тогда можно SELECT (`cena_pc`+`cena_lp`+`cena_pr`) AS `cena`
--- Конец цитаты ---
Была такая идея, пробовал через ISNULL заменить на 0, а потом вышеописанным методом, что-то там не задалось, завтра повнимательней поэкспериментирую.
ANALGIN2, I-one спасибо за проявленный интерес.
Eugene L.:
в чем выполняешь запрос?
Может убрать из запроса DISTINCT цену Laptop.price? Может перед сном не понял суть, но смысла в них не вижу
После where условие на NULL и все вроде
Навигация
Перейти к полной версии